gonzalob

Untitled

Jun 9th, 2020
959
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 6.83 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include "pila.h"
  4.  
  5. typedef struct {
  6.      int legajo;
  7.      char nombreYapellido [30];
  8.      int edad;
  9.      int anio;
  10. //año que cursa, recordar que no podemos utilizar la ñ para definir variables
  11. } stAlumno;
  12.  
  13. void cargarArchivo(char nombreArchivo[20]);
  14. stAlumno cargarUnAlumno();
  15. void leerArchivo(char nombreArchivo[20]);
  16. void mostrarUnAlumno(stAlumno aux);
  17. void cargarAlFinal(char nombreArchivo[20]);
  18. int pasarApila(Pila * pilinMayores, char nombreArchivo[20],int edad );
  19. void mostrarAlumnoPorRango(char nombreArchivo[20],int minEdad, int maxEdad);
  20. void mayorEdad(char nombreArchivo[20]);
  21.  
  22. int main()
  23. {
  24.     char nombreArchivo[] = "alumnos.dat";
  25.     Pila pila; inicpila(&pila);
  26.     Pila pila2; inicpila(&pila2);
  27.  
  28.     //cargarArchivo(nombreArchivo);
  29.     //cargarAlFinal(nombreArchivo);
  30.     leerArchivo(nombreArchivo);
  31.  
  32.     int cantidadApilados18 = pasarApila(&pila,nombreArchivo,18); //mayores
  33.     //printf("la cantidad de mayores es de ... %d\n",cantidadApilados18);
  34.     //mostrar(&pila);
  35.  
  36.     int nuevaEdad = 32;
  37.     int cantidadApiladosEdad = pasarApila(&pila2,nombreArchivo,nuevaEdad); //otra edad
  38.     //printf("la cantidad de mayores es %d es de ... %d\n",nuevaEdad,cantidadApiladosEdad);
  39.     //mostrar(&pila2);
  40.  
  41.     //mostrarAlumnoPorRango(nombreArchivo,30,50);
  42.  
  43.     mayorEdad(nombreArchivo);
  44.  
  45.     return 0;
  46. }
  47.  
  48. /*
  49. Crear una función que cargue un archivo de alumnos.
  50. Abrirlo de manera tal de verificar si el archivo ya está creado previamente.
  51.  Cargar el archivo con 5 datos. Cerrarlo dentro de la función
  52. */
  53.  
  54. void cargarArchivo(char nombreArchivo[20])
  55. {
  56.     FILE * archi = fopen(nombreArchivo,"rb");
  57.     if (archi == NULL) //el archi no esta!
  58.     {
  59.         archi = fopen(nombreArchivo,"wb");
  60.         if (archi != NULL) //no hay error de escritura
  61.         {
  62.             int cantidadDeDatos = 2;
  63.             int datosCargados = 0;
  64.             for (datosCargados = 0;datosCargados<cantidadDeDatos;datosCargados++)
  65.             {
  66.                  stAlumno aux = cargarUnAlumno();
  67.                  fwrite(&aux,sizeof(stAlumno),1,archi);
  68.             }
  69.         }
  70.     }
  71.     else
  72.         {
  73.             printf("el archi esta con datos\n");
  74.             leerArchivo(nombreArchivo);
  75.         }
  76.  
  77.         fclose(archi);
  78. }
  79.  
  80. stAlumno cargarUnAlumno()
  81. {
  82.     stAlumno aux;
  83.  
  84.     printf("ingrese legajo\n");
  85.     fflush(stdin);
  86.     scanf("%d",&aux.legajo);
  87.  
  88.     printf("ingrese nombre Y apellido \n");
  89.     fflush(stdin);
  90.     scanf("%s",&aux.nombreYapellido);
  91.  
  92.     printf("ingrese edad \n");
  93.     fflush(stdin);
  94.     scanf("%d",&aux.edad);
  95.  
  96.      printf("ingrese anio \n");
  97.     fflush(stdin);
  98.     scanf("%d",&aux.anio);
  99.  
  100.     return aux;
  101. }
  102.  
  103. /*
  104. Crear una función que muestre por pantalla
  105. los registros de un archivo de alumnos. Modularizar.
  106. */
  107.  
  108. void leerArchivo(char nombreArchivo[20])
  109. {
  110.     FILE * archi = fopen(nombreArchivo,"rb");
  111.     if (archi != NULL) //el archi  esta!
  112.     {
  113.         stAlumno alumnoLector;
  114.         while (fread(&alumnoLector,sizeof(stAlumno),1,archi)>0)
  115.         {
  116.             mostrarUnAlumno(alumnoLector);
  117.         }
  118.     }
  119.     else
  120.     {
  121.         printf("el archivo no existeee\n");
  122.     }
  123.  
  124. }
  125.  
  126. void mostrarUnAlumno(stAlumno aux)
  127. {
  128.     printf("***************\n");
  129.     printf("legajo -> %d\n",aux.legajo);
  130.     printf("nombre Y apellido -> %s\n",aux.nombreYapellido);
  131.     printf("edad -> %d\n",aux.edad);
  132.     printf("anio -> %d\n",aux.anio);
  133.     printf("***************\n");
  134. }
  135.  
  136. /*
  137. Crear una función que permita agregar de a un elemento al final del archivo.
  138.  O sea, se debe abrir el archivo, se piden los datos
  139.  (se llena una variable de tipo struct alumno),
  140.  se escribe en el archivo y se cierra.
  141. */
  142. void cargarAlFinal(char nombreArchivo[20])
  143. {
  144.     FILE * archi = fopen(nombreArchivo,"rb");
  145.     if (archi != NULL) //el archi  esta!
  146.     {
  147.         archi = fopen(nombreArchivo,"ab");//agrego al final
  148.         if (archi != NULL)
  149.         {
  150.             char mander = 's';
  151.             while (mander == 's')
  152.             {
  153.                 stAlumno aux = cargarUnAlumno();
  154.                 fwrite(&aux,sizeof(stAlumno),1,archi);
  155.  
  156.                 printf("desea seguir??? \n");
  157.                 fflush(stdin);
  158.                 scanf("%c",&mander);
  159.             }
  160.         }
  161.         else
  162.         {
  163.             printf("no se puede escribir\n");
  164.         }
  165.     }
  166.     else
  167.         {
  168.             printf("no se puede abrir, existe???\n");
  169.         }
  170.     fclose(archi);
  171. }
  172. /*
  173. Crear una función que pase a una pila los números de legajo de los alumnos mayores de edad.
  174. */
  175. /*
  176. Dado un archivo de alumnos, hacer una función que cuente la cantidad de alumnos mayores a edad específica que se envía por parámetro.
  177. */
  178. int pasarApila(Pila * pilinMayores, char nombreArchivo[20], int edadDeterminada )
  179. {
  180.     FILE * archi = fopen(nombreArchivo,"rb");
  181.     int cantidadApilados = 0;
  182.     if (archi != NULL) //el archi  esta!
  183.     {
  184.         stAlumno alumnoLector;
  185.         while (fread(&alumnoLector,sizeof(stAlumno),1,archi)>0)
  186.         {
  187.            if (alumnoLector.edad >= edadDeterminada)
  188.            {
  189.                apilar(pilinMayores,alumnoLector.legajo);
  190.                cantidadApilados++;
  191.            }
  192.         }
  193.     }
  194.     else
  195.     {
  196.         printf("el archivo no existeee\n");
  197.     }
  198.     fclose(archi);
  199.     return cantidadApilados;
  200. }
  201.  
  202. /*
  203. Dado un archivo de alumnos, mostrar por pantalla el nombre de todos los alumnos entre un rango de edades específico (por ejemplo, entre 17 y 25 años).
  204. Dicho rango debe recibirse por parámetro. Modularizar
  205. */
  206.  
  207. void mostrarAlumnoPorRango(char nombreArchivo[20],int minEdad, int maxEdad)
  208. {
  209.   FILE * archi = fopen(nombreArchivo,"rb");
  210.     if (archi != NULL) //el archi  esta!
  211.     {
  212.         stAlumno alumnoLector;
  213.         while (fread(&alumnoLector,sizeof(stAlumno),1,archi)>0)
  214.         {
  215.            if ((alumnoLector.edad > minEdad) && (alumnoLector.edad < maxEdad))
  216.            {
  217.                mostrarUnAlumno(alumnoLector);
  218.            }
  219.         }
  220.     }
  221.     else
  222.     {
  223.         printf("el archivo no existeee\n");
  224.     }
  225.     fclose(archi);
  226. }
  227. /*
  228. Dado un archivo de alumnos, mostrar el los datos del alumno de mayor edad. Modularizar.
  229. */
  230. void mayorEdad(char nombreArchivo[20])
  231. {
  232.     FILE * archi = fopen(nombreArchivo,"rb");
  233.     if (archi != NULL) //el archi  esta!
  234.     {
  235.         stAlumno alumnoLector;
  236.         stAlumno alumnoMayor;
  237.         fread(&alumnoMayor,sizeof(stAlumno),1,archi);//el primero
  238.         while (fread(&alumnoLector,sizeof(stAlumno),1,archi)>0)//leo desde el segundo
  239.         {
  240.            if (alumnoLector.edad > alumnoMayor.edad)
  241.            {
  242.                alumnoMayor = alumnoLector;
  243.            }
  244.         }
  245.         printf("el alumno mayor es ...\n");
  246.         mostrarUnAlumno(alumnoMayor);
  247.     }
  248.     else
  249.     {
  250.         printf("el archivo no existeee\n");
  251.     }
  252.     fclose(archi);
  253. }
Advertisement
Add Comment
Please, Sign In to add comment