Parcial Resuelto – Informática

Informática: Parcial 1

Ejercicio 1: En un proceso industrial se mide el porcentaje de carbono en una determinada sustancia cada 5 minutos. Se pide hacer un programa que permita guardar los datos en un archivo llamado porcentaje.dat, ingresandolo por teclado.

Ejercicio 2: Se pide hacer un programa que realice las siguientes tareas.

  • Leer los datos del archivo porcentaje.dat y almacenarlos en una variable de tipo vector sabiendo que el archivo puede tener a lo sumo 1000 valores.
  • Presentar un menú, que se repetirá hasta la condición de fin. Las opciones del menú serán las siguientes:
  • Listar los porcentajes empezando por el ultimo medido hasta el primero.
  • Listar los datos en los que cumpla %<promedio
  • Informar cual fue el porcentaje mínimo, y el tiempo en el que fue medido.
  • Finalizar
Aclaración: Uso valor máximo 10 ya que no modifica la resolución del ejercicio. Se puede resolver de una manera mucho mas sencilla pero trate de hacerlo lo mas completo posible para que sirva como caso de estudio.

Los métodos usados son:

#include "stdio.h"
#include "stdlib.h"
//UNSAM
//Ejercicio modelo de parcial - Materia: Informática

void initVector(int vec[], int tam){
     int i = 0;

     for(i=0;i<tam;i++){
          vec[i]=0;
     }
}

void loadVector(int vec[], int &tam){
     int i=0;
     int opc=0;

     printf("Desea ingresar un valor?: ");
     printf("\n1- Si");
     printf("\n2- No");
     printf("\n#: ");
     scanf("%d", &opc);

     if(opc==1){
         printf("Ingrese un valor para vec[%d]: ", i);
         scanf("%d", &vec[i]);
         i++;   

         do{
            printf("Desea ingresar otro valor?:");
            printf("\n1- Si");
            printf("\n2- No");
            printf("\n#: ");
            scanf("%d", &opc);

           if(opc==1){
               printf("Ingrese un valor para vec[%d]: ", i);
               scanf("%d", &vec[i]);
               i++;
           }
         }while((i<=tam) && (opc==1));
         tam = i;
     }
}

void loadValor(int vec[], int &tam){
     int i=0;
     int opc=0;

         printf("Ingrese un valor para vec[%d]: ", tam);
         scanf("%d", &vec[tam]);
         tam++;
}

void showVector(int vec[], int tam){
     int i=0;

     for(i=0;i<tam;i++){
         printf("\nEl valor de vec[%d] es: %d\n", i, vec[i]);
     }
}

int suma(int vec[], int tam){
    int i=0;
    int suma=0;

    for(i=0;i<tam;i++){
        suma = suma + vec[i];
    }

    return suma;
}

float promedio(int vec[], int tam){
    float promedio=0.0;

    promedio = suma(vec,tam) / float(tam);

    return promedio;
}

void swap(int &a, int &b){
    int aux=0;

    aux = a;
    a=b;
    b=aux;
}

//Usamos este metodo para encontrar el minimo y maximo ordenando al vector
void ordenBurbuja(int vec[], int tam){
     int i=0,j=0;

     for(i=0;i<tam-1;i++){
         for(j=0;j<tam-1-i;j++){
             if(vec[j]>vec[j+1]){
                swap(vec[j],vec[j+1]);
             }
         }
     }
}

//Otra forma es hacer 2 metodos que busquen al minimo y al maximo directamente
int minimo(int vec[], int tam){
    int i=0;
    int minimo=vec[0];
    for(i=0;i<tam;i++){
        if(vec[i]<minimo){
            minimo=vec[i];
        }
    }

    return minimo;
}

int maximo(int vec[], int tam){
    int i=0;
    int maximo=vec[0];

    for(i=0;i<tam;i++){
        if(vec[i]>maximo){
            maximo=vec[i];
        }
    }

    return maximo;
}

int main(void){
    FILE *fp;
    int leer[10];
    int escribir[10];
    int tam=10;
    int opcion=0;
    char nombre[20] = "porcentaje.dat";

    //Errores
    char errorAbrir[20] = "El error es: ";
    char errorCerrar[40] = "El error al cerrar el archivo es: ";
    char errorEscribir[40] = "El error al escribir es: ";
    char errorLeer[40] = "El error al leer es: ";

    //Abrimos el archivo y comprobamos que la apertura sea correcta...
    if(fp = fopen(nombre,"w+")){
          printf("Archivo abierto correctamente!\n\n");
    }else{
          printf("Hubo algun problema al abrir/crear el archivo...\n");
          perror(errorAbrir);
          exit(1);
    }

    //Inicializo el vector
    initVector(escribir,tam);
    initVector(leer,tam);
    //Cargo el vector con datos que luego grabaremos en un archivo
    loadVector(escribir, tam);
    //Muestro el vector
    showVector(escribir, tam);

    //Escribimos los datos del vector en el archivo
    if(fwrite(escribir,sizeof(int),tam,fp)){
        printf("Escritura en '%s' exitosa!\n", nombre);
    }else{
          printf("Error al escribir datos!\n");
          perror(errorEscribir);
    }  

    //Ponemos el puntero al principio del archivo
    rewind(fp);

    //Leemos el archivo
    int cant=0;
    if(cant = fread(leer,sizeof(int),10,fp)){
    printf("Lectura de '%s' exitosa!", nombre);
    }else{
    printf("Error al leer el archivo!\n");
    perror(errorLeer);
    }
    showVector(leer,tam);

    //Aca va el Menu
    do{
    printf ("1-Ver archivo \n");
    printf ("2-Agregar un valor \n");
    printf ("3-Ver Promedio \n");
    printf ("4-Ver Minimo y Maximo \n");
    printf ("5-Ordenar Vector\n");
    printf ("6-Finalizar \n");
    printf("\n#: ");
    scanf ("%d", &opcion);

    switch(opcion){
                   case 1:
                        showVector(leer,cant);
                   break;
                   case 2:
                        loadValor(leer,cant);
                        rewind(fp);
                        if(fwrite(leer,sizeof(int),cant,fp)){
                              printf("Escritura en '%s' exitosa!\n", nombre);
                        }else{
                              printf("Error al escribir datos!\n");
                              perror(errorEscribir);
                        }
                   break;
                   case 3:
                        printf("El promedio de los valores grabados en los archivos es: %f\n", promedio(leer,cant));
                   break;
                   case 4:
                        printf("El maximo es: %d\n", maximo(leer,cant));
                        printf("El minimo es: %d\n", minimo(leer,cant));
                   break;
                   case 5:
                        printf("ordenando vector...\n");
                        ordenBurbuja(leer,cant);
                        printf("El vector ordenado es: ");
                        showVector(leer,cant);
                   break;
                   case 6:
                        printf("Adios!\n");
                   break;
    }
                        //Ponemos el puntero al principio del archivo
                        rewind(fp);

                        //Volvemos a leer el archivo
                        int cant=0;
                        if(!(cant = fread(leer,sizeof(int),10,fp))){
                              printf("Error al leer el archivo!\n");
                              perror(errorLeer);
                        }

                        if((opcion<1) || (opcion>6)){
                             printf("Opcion incorrecta!\nIntentelo de nuevo...\n");
                        }
    }while(opcion!=6);

    if(fclose(fp)){
        printf("Archivo cerrado exitosamente!\nAdios!");
    }else{perror(errorCerrar);}
}

Saludos!

Ejercicio de Cálculo II

Estudiar la cotinuidad de  en

Podemos estudiar los límites a través del conjunto de rectas que pasa por el origen tal que 

Como vemos el valor es 0, ahora vamos a tratar de resolverlo por definición para demostrar que es efectivamente este valor y mostrar, a la vez, su continuidad en punto

 

 

 

 

Entonces, queda demostrado que para cualquier epsilon mayor que cero y tan chico como queramos, existe un delta que hace a la diferencia entre la función y L mas chica que el epsilon elegido para valores lo suficientemente cerca de (0,0).

Por lo tanto: La función es continua en el origen.

Corroboramos esto con el gráfico de la función

:wq!

Elección DR y BDR en OSPF

Cuando varios routers estan conectados a un segmento de red del tipo broadcast (como las redes Ethernet), uno de estos routers del segmento tomará el control y mantendrá las adyacencias entre todos los routers de ese segmento. Ese router toma el nombre de DR (Designated Router) y será elegido a través de la información que contienen los mensajes hello que se intercambian los routers. Para una eficaz redundancia también se elige un router designado de reserva ó BDR. Los DR son creados en enlaces multiacceso debido a que el número de adyacencias incrementaría de manera significativa el tráfico de la red, de esta forma el DR y el BDR terminan reduciendo la cantidad de las mismas y optimizando el ancho de banda y los recursos de hardware de los routers.
En el caso de no tener DR BDR la cantidad de adyacencias que se establecerian en una topología como la de la figura se refleja en la fórmula:
Entonces, si tenemos por ejemplo 4 routers la cantidad de adyacencias sin DR BDR serian:
Esta forma de añadir adyacencias consumiría gran cantidad de ancho de banda, recursos de memoria y CPU de los routers. El propósito de este método es reducir al máximo este consumo de recursos haciendo que todos los demás routers establezcan adyacencias con el. Entonces, utilizando el sistema anteriormente mencionado la cantidad de adyacencias en redes multiacceso se limita a:
El DR recibe actualizaciones y las distribuye a todos los demás routers del segmento asegurándose con acuses de recibo (ack´s) de que éstos han recibido correctamente dichas actualizaciones y poseen una copia sincronizada de la LSDB. Los routers notifican los cambios a través de la direccion multicast 224.0.0.6 a su vez el DR envía las LSA a los routers por la direccion 224.0.0.5. El BDR escucha pasivamente y mantiene una tabla de relación con todos los demás routers, en el caso de que el DR deje de enviar hello el BDR tomará el papel del DR.
Hacemos a continuación una obvia demostración de que el número de adyancias disminuye con el DR y BDR usando el método de inducción:
:wq!

Archivos

Dejo los 2 primeros ejercicios de la sección de Manejo de Archivos resueltos y el primero de matrices.
Ej 1

#include "stdio.h"

void ingresarDatos(int a[], int tam){
     int i=0;
     int aux=0;

     for(i=0; i<=tam; i++){
         printf("Ingrese un valor para el arreglo: ");
         scanf("%d", &aux);
         a[i]=aux;
     }
} 

void initVector(int vec[], int tam){
     int i=0;

     for(i=0;i<=tam;i++){
         vec[i] = 0;
     }
}

void showVector(int vec[], int tam){
     int i=0;

     for(i=0;i<=tam;i++){
         printf("El vector tiene en la posicion %d: %d\n", i, vec[i]);
     }
}

int main(){
     FILE *fp;
     int leer[10];
     int escribir[10];
     int i=0;
     char nombre[20] = "enteros.dat";        

     initVector(leer,10);
     initVector(escribir,10);

     //showVector(leer,10);
     ingresarDatos(escribir,10);

     if(fp = fopen(nombre,"w+")){
           printf("archivo abierto correctamente!\n\n");
           //Escribir datos en el archivo...
           if(fwrite(escribir,sizeof(int),10,fp)){
               printf("\nArchivos escritos exitosamente!\n\n");
           }else{printf("\nHubo un problema al escrbir los archivos!\n\n");}

           //Ponemos el puntero al principio del archivo
           rewind(fp);

           //Leemos los archivos
           if(fread(leer,sizeof(int),10,fp)){
               printf("\nLectura exitosa!\n\n");
           }else{printf("Error al leer los datos!");}
     }else{
           printf("Problemas al abrir el archivo!");
     }

     //Mostramos los datos leidos
     showVector(leer,10);
}

Ej 2

#include "stdio.h"  

void ingresarDatos(float a[], int tam){
     int i=0;
     float aux=0;

     for(i=0; i<=tam; i++){
         printf("Ingrese un valor para el arreglo: ");
         scanf("%f", &aux);
         a[i]=aux;
     }
} 

void initVector(float vec[], int tam){
     int i=0;

     for(i=0;i<=tam;i++){
         vec[i] = 0;
     }
}

void showVector(float vec[], int tam){
     int i=0;

     for(i=0;i<=tam;i++){
         printf("El vector tiene en la posicion %d: %f\n", i, vec[i]);
     }
}

int main(){
     FILE *fp;
     float leer[10];
     float escribir[10];
     int i=0;
     char nombre[20] = "reales.dat";        

     initVector(leer,10);
     initVector(escribir,10);

     //showVector(leer,10);
     ingresarDatos(escribir,10);

     if(fp = fopen(nombre,"w+")){
           printf("archivo abierto correctamente!\n\n");
           //Escribir datos en el archivo...
           if(fwrite(escribir,sizeof(float),10,fp)){
               printf("\nArchivos escritos exitosamente!\n\n");
           }else{printf("\nHubo un problema al escrbir los archivos!\n\n");}

           //Ponemos el puntero al principio del archivo
           rewind(fp);

           //Leemos los archivos
           if(fread(leer,sizeof(float),10,fp)){
               printf("\nLectura exitosa!\n\n");
           }else{printf("Error al leer los datos!");}
     }else{
           printf("Problemas al abrir el archivo!");
     }

     //Mostramos los datos leidos
     showVector(leer,10);

     fclose(fp);
}

Ej 6.1 Matrices

#include "stdio.h"

void ingresarDatos(int a[5][5], int tam){
     int i=0;
     int j=0;
     int aux=0;

     for(i=0; i<=tam; i++){
      for(j=0; j<=tam; j++){
         printf("Ingrese un valor para el arreglo[%d][%d]: ",i,j);
         scanf("%d", &aux);

         a[i][j]=aux;
     }
}
} 

void initVector(int vec[5][5], int tam){
     int i=0;
     int j=0;

     for(i=0;i<=tam;i++){
          for(j=0; j<=tam; j++){
         vec[i][j] = 0;
     }}
}

void showVector(int vec[5][5], int tam){
     int i=0;
     int j=0;

     for(i=0;i<=tam;i++)
         for(j=0;j<=tam;j++){
       {
         printf("MAT[%d][%d]: %d\n", i,j, vec[i][j]);
       }
     }
}

int main(){
     FILE *fp;
     int leer[5][5];
     int escribir[5][5];
     int i=0;
     char nombre[20] = "matriz.dat";        

     initVector(leer,5);
     initVector(escribir,5);

     //showVector(leer,5);
     ingresarDatos(escribir,5);

     if(fp = fopen(nombre,"w+")){
           printf("archivo abierto correctamente!\n\n");
           //Escribir datos en el archivo...
           if(fwrite(escribir,sizeof(int[5]),5,fp)){
               printf("\nArchivos escritos exitosamente!\n\n");
           }else{printf("\nHubo un problema al escrbir los archivos!\n\n");}

           //Ponemos el puntero al principio del archivo
           rewind(fp);

           //Leemos los archivos
           if(fread(leer,sizeof(int[5]),5,fp)){
               printf("\nLectura exitosa!\n\n");
           }else{printf("Error al leer los datos!");}
     }else{
           printf("Problemas al abrir el archivo!");
     }

     //Mostramos los datos leidos
     showVector(leer,5);
     fclose(fp);
}

return 0;

Ejercicios C – Informática

1. a)

#include
//Ejercicio 1 - Informatica - UNSAM
int main(void){
printf("Hello World!!!!!");
}

b)

#include "stdio.h"
//Ejercicio 2 - Informatica - UNSAM
void ingresarDatos(int &a, int &b){
printf("Ingrese la altura del rectangulo: ");
scanf("%d", &a);
printf("Ingrese la base del rectangulo: ");
scanf("%d", &b);
}

int calcularSuperficie(int altura, int base){
int sup=0;
sup = base*altura;

return sup;
}

void menu(int &base, int &altura){
char opc;
while(opc!='3'){
printf("\n1- Ingresar datos");
printf("\n2- Calcular superficie");
printf("\n3- Salir\n");
scanf("%c",&opc);

if(opc=='1'){
ingresarDatos(base,altura);
printf("\nDatos ingresados correctamente!");
}else if(opc=='2'){
printf("\nLa superficie del rectangulo es: %d", calcularSuperficie(base,altura));
}else if(opc=='3'){

}else{
printf("\nOpcion Incorrecta!");
}
}
}

//procedimiento principal
int main(void){
//variables
int base=0;
int altura=0;

menu(base, altura);
}

c)

#include "stdio.h"
//Ejercicio 3 - Informatica - UNSAM
//Constantes
#define PI 3.14;

void ingresarDatos(int &a){
printf("Ingrese el radio de la circunferencia: ");
scanf("%d", &a);
}

float calcularSuperficie(int radio){
float sup;
float pi = PI;

sup = float(radio)*float(radio)*pi;

return sup;
}

float calcularPerimetro(int radio){
float perimetro = 0;
float pi = PI;

perimetro = 2*pi*radio;

return perimetro;
}

void menu(int &radio){
char opc;
while(opc!='4'){
printf("\n1- Ingresar datos");
printf("\n2- Calcular superficie");
printf("\n3- Calcular perimetro");
printf("\n4- Salir\n");
scanf("%c",&opc);

if(opc=='1'){
ingresarDatos(radio);
printf("\nDatos ingresados correctamente!");
}else if(opc=='2'){
printf("\nLa superficie de la circunferencia es: %f", calcularSuperficie(radio));
}else if(opc=='3'){
printf("\nEl perimetro de la circunferencia es: %f", calcularPerimetro(radio));
}else if(opc=='4'){
printf("Bye!");
}else{
printf("\nOpcion Incorrecta!");
}
}
}

//procedimiento principal
int main(void){
//variables
int radio=0;

menu(radio);
}

d)

#include
//Ejercicio 4 - Informatica - UNSAM
void ingresarDatos(int &a, int &b, int &c){
printf("Ingrese un numero: ");
scanf("%d", &a);
printf("Ingrese otro numero: ");
scanf("%d", &b);
printf("Ingrese otro numero: ");
scanf("%d", &c);
}

int suma(int a,int b,int c){
int suma=0;
suma = a+b+c;

return suma;
}

void menu(int &a,int &b,int &c){
char opc;
while(opc!='3'){
printf("\n1- Ingresar datos");
printf("\n2- Calcular suma");
printf("\n3- Salir\n");
scanf("%c",&opc);

if(opc=='1'){
ingresarDatos(a,b,c);
printf("\nDatos ingresados correctamente!");
}else if(opc=='2'){
printf("\nLa suma es: %d", suma(a,b,c));
}else if(opc=='3'){

}else{
printf("\nOpcion Incorrecta!");
}
}
}

int main(void){
int a=0;
int b=0;
int c=0;

menu(a,b,c);
}

2. a)

#include
//Ejercicio 5 - Informatica - UNSAM

int main(void){
int a=0;
int b=0;

printf("Ingrese un valor: ");
scanf("%d",&a);
printf("Ingrese un valor: ");
scanf("%d",&b);

if(aprintf("Resultado: %d",a*b);
}else{
if(b!=0){
printf("Resultado: %d", a/b);
}else{
printf("No se puede dividir por 0!");
}
}
}

b)

#include
//Ejercicio 6 - Informatica - UNSAM

//Constantes
#define PI 3.14

void ingresarDatos(int &base, int &altura, int &radio){
printf("Ingrese la base: ");
scanf("%d",&base);

printf("Ingrese la altura: ");
scanf("%d",&altura);

printf("Ingrese el radio: ");
scanf("%d",&radio);
}

float superficieCircunferencia(int radio){
float sup;
float pi = PI;

sup = float(radio)*float(radio)*pi;

return sup;
}

float superficieTriangulo(int base, int altura){
int sup=0;
sup = (base*altura)/2;

return sup;
}

char compararSuperficies(int base,int altura,int radio){
char a;

if(superficieTriangulo(base,altura)a='c';
}else if(superficieTriangulo(base,altura)>superficieCircunferencia(radio)){
a='t';
}else{
a='i';
}

return a;
}

void menu(int &base, int &altura, int &radio){
char opc;
while(opc!='3'){
printf("\n1- Ingresar datos");
printf("\n2- Comparar superficies");
printf("\n3- Salir\n");
scanf("%c",&opc);

if(opc=='1'){
ingresarDatos(base,altura,radio);
printf("\nDatos ingresados correctamente!");
}else if(opc=='2'){
if(compararSuperficies(base,altura,radio)=='i'){
printf("Las superficies son iguales!");
}else if(compararSuperficies(base,altura,radio)=='t'){
printf("La superficie del triangulo es mayor!");
}else{
printf("La superficie de la circunferencia es mayor!");
}
}else if(opc=='3'){

}else{
printf("\nOpcion Incorrecta!");
}
}
}

//Porgrama principal
int main(void){
int radio=0;
int altura=0;
int base=0;

menu(base, altura, radio);
}

c)

#include
//Ejercicio 7 - Informatica - UNSAM

void ingresarDatos(int &a){
printf("Ingrese un valor: (7 para salir)");
scanf("%d", &a);
}
//Se utiliza un tipo de dato integer debiado a que en C no existe el tipo booleano
int esMultiplo(int &a){
if((a%7)==0){return 1;}else{return 0;}
}

int main(void){
int valor=0;

while(valor!=7){
ingresarDatos(valor);
if(esMultiplo(valor)== 1){ printf("El valor ingresado es multiplo de 7!\n");
}else{ printf("El valor ingresado NO es multiplo de 7!!\n"); }
}
}

e)

#include
//Ejercicio 9 - Informatica - UNSAM

void ingresarDatos(int a[], int tam){
int i=0;
int aux=0;

for(i=1; iprintf("Ingrese un valor para el arreglo: ");
scanf("%d", &aux);
a[i]=aux;
}
}

float promedio(int a[], int tam){
int i=0;
int suma=0;
float promedio=0;

for(i=1;isuma = suma + a[i];
printf("\n%d",suma);
}
printf("\n%d",suma);
printf("\n%d",tam);
promedio= float(suma)/tam;
return promedio;
}

void showVector(int a[], int tam){
int i=0;

for(i=1;iprintf("\n El valor de la posicion %d del vector es: %d", i, a[i]);
}
}

int main(void){
int vector[10];

ingresarDatos(vector,10);
showVector(vector,10);

printf("El promedio es de: %f", promedio(vector,10));

}

f)

#include
//Ejercicio 10 - Informatica - UNSAM

void ingresarDatos(int a[], int tam){
int i=0;
int aux=0;

for(i=1; iprintf("Ingrese un valor para el arreglo: ");
scanf("%d", &aux);
a[i]=aux;
}
}

int maximo(int a[], int tam){
int i=0;
int aux=0;

aux=a[1];

for(i=1;iif(auxaux = a[i];
}
}

return aux;
}

void showVector(int a[], int tam){
int i=0;

for(i=1;iprintf("\n El valor de la posicion %d del vector es: %d", i, a[i]);
}
}

int main(void){
int vector[10];

ingresarDatos(vector,10);
showVector(vector,10);
printf("\nEl valor maximo es: %d",maximo(vector,10));

}

g)

#include
//Ejercicio 11 - Informatica - UNSAM

int productoria(int a[], int cant){
int i=0;
int productoria=1;

for(i=1;iproductoria = productoria * a[i];
}

return productoria;
}

void initVector(int a[], int tam){
int i=0;

for(i=1;ia[i]=0;
}
}

void ingresarDatos(int a[], int tam, int &cant){
int i=1;
int valor=0;

while(valor>=0 && iprintf("\nIngrese un valor: ");
scanf("%d", &valor);
a[i] = valor;
i++;
}

cant = i-2;
}

void showVector(int a[], int tam){
int i=0;

for(i=1;iprintf("\n El valor de la posicion %d del vector es: %d", i, a[i]);
}
}

int main(void){
int cant=0;
int tam=50;
int vector[50];

initVector(vector,tam);
showVector(vector,tam);

ingresarDatos(vector,tam,cant);

printf("La productoria es: %d y la cantidad de valores ingresador es de: %d",productoria(vector,cant),cant);

}

Ej 6-2 a 6-3

#include "stdio.h"

void menu(){

}

int sumaDiagSec(int a[5][5], int tam){
    int i=0;
    int j=0;
    int suma = 0;

    for(i=0; i<tam; i++){
        for(j=0; j<tam; j++){
            if (i+j==tam+1){suma = suma + a[i][j];}
            }
        }
    }

int productoDiagonal(int a[5][5], int tam){
     int i=0;
     int prod=1;

     for(i=0;i<tam;i++){
         prod = prod * a[i][i];
     }

     return prod;
}

void ingresarDatos(int a[5][5], int tam){
     int i=0;
     int j=0;
     int aux=0;

     for(i=0; i<tam; i++){
      for(j=0; j<tam; j++){
         printf("Ingrese un valor para el arreglo[%d][%d]: ",i,j);
         scanf("%d", &aux);

         a[i][j]=aux;
     }
}
} 

void initVector(int vec[5][5], int tam){
     int i=0;
     int j=0;

     for(i=0;i<tam;i++){
          for(j=0; j<tam; j++){
         vec[i][j] = 0;
     }}
}

void showVector(int vec[5][5], int tam){
     int i=0;
     int j=0;

     for(i=0;i<tam;i++)
         for(j=0;j<tam;j++){
       {
         printf("MAT[%d][%d]: %d\n", i,j, vec[i][j]);
       }
     }
}

int main(){
     FILE *fp;
     int leer[5][5];
     int escribir[5][5];
     int i=0;
     char nombre[20] = "matriz.dat";        

     initVector(leer,5);
     initVector(escribir,5);

     //showVector(leer,5);
     ingresarDatos(escribir,5);

     if(fp = fopen(nombre,"w+")){
           printf("archivo abierto correctamente!\n\n");
           //Escribir datos en el archivo...
           if(fwrite(escribir,sizeof(int[5]),5,fp)){
               printf("\nArchivos escritos exitosamente!\n\n");
           }else{printf("\nHubo un problema al escrbir los archivos!\n\n");}

           //Ponemos el puntero al principio del archivo
           rewind(fp);

           //Leemos los archivos
           if(fread(leer,sizeof(int[5]),5,fp)){
               printf("\nLectura exitosa!\n\n");
           }else{printf("Error al leer los datos!");}
     }else{
           printf("Problemas al abrir el archivo!");
     }

     //Mostramos los datos leidos
     showVector(leer,5);

     //Muestro el producto de la diagonal
     printf("El producto de la diagonal es: %d\n\n", productoDiagonal(leer,5));
     //Imprimimos la sumatoria de la diagonal secundaria de la matriz
     printf("La suma de la diagonal secundaria es: %d",sumaDiagSec(leer,5));

     fclose(fp);
}

:wq!