Advertisement
Guest User

Untitled

a guest
Dec 14th, 2018
182
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 6.02 KB | None | 0 0
  1. main.c
  2. Hoy
  3. 16:20
  4.  
  5. Evangelina Segesser Ferreyra subió un elemento
  6. C
  7. main.c
  8. #include <stdio.h>
  9. #include <stdlib.h>
  10. #define MAX 20
  11. #define LINEA 1024
  12.  
  13.  
  14. typedef struct alumno{
  15.  char matri[4], apel[10], codigo[7];
  16.  int anio;
  17.  float prom;};
  18.  
  19. void cargaymuestraarchivo (struct alumno R[], int *c);
  20.  
  21. void muestraarreglo(struct alumno R[], int c);
  22.  
  23. void alumnosporcarrera(struct alumno R[],int c);
  24.  
  25. int obtieneindice(char tabla[][7], char cod[]);
  26.  
  27. void mejorpromedio(struct alumno R[],int c);
  28.  
  29. void echaralumno(struct alumno R[], int *c);
  30.  
  31. void cambiodecacarrera(struct alumno R[], int c);
  32.  
  33. void masviejo(struct alumno R[], int c);
  34.  
  35. void creaarchivo (struct alumno R[],int c);
  36.  
  37. void main(){
  38.  
  39. struct alumno A[MAX];
  40. int n,cant, opcion;
  41.  
  42.  
  43.     fflush(stdin);
  44.     cargaymuestraarchivo(A,&cant);
  45.  
  46.     printf("Que accion desea realizar?\n");
  47.           do
  48.             {   printf( " 1. Mostrar el listado de alumnos y sus datos. \n ");
  49.                 printf( " 2. Calcular y mostrar el total de alumnos por carrera. \n ");
  50.                 printf( " 3. Calcular el mejor promedio. \n ");
  51.                 printf( " 4. Calcular el promedio mas bajo y eliminar el alumno de la institucion.\n ");
  52.                 printf( " 5. Buscar un alumno por su matricula y modificar su carrera.\n ");
  53.                 printf( " 6. Informar el alumno con mayor antiguedad en la institucion.\n ");
  54.                 printf( " 7. Crear un archivo nuevo con el listado modificado. \n ");
  55.                 printf( " 8. Salir. \n \n " );
  56.                 printf( " Introduzca opcion (1-7): \n ");
  57.  
  58.                 scanf( "%d", &opcion );
  59.  
  60.  
  61.                 switch ( opcion )
  62.                 {
  63.                     case 1: muestraarreglo(A,cant);
  64.                             break;
  65.                     case 2: alumnosporcarrera(A,cant);
  66.                             break;
  67.  
  68.                     case 3: mejorpromedio(A,cant);
  69.                             break;
  70.  
  71.                     case 4: echaralumno(A,cant);
  72.                             break;
  73.  
  74.                     case 5: cambiodecacarrera(A,cant);
  75.                             break;
  76.  
  77.                     case 6: masviejo(A,cant);
  78.                             break;
  79.  
  80.                     case 7: creaarchivo(A,cant);
  81.                             break;
  82.                         }
  83.  
  84.  
  85.                 } while ( opcion != 8 );
  86.  
  87.  
  88.   }
  89.  
  90.  
  91. void cargaymuestraarchivo(struct alumno R[],int *c){
  92.  
  93. FILE *a;
  94.  
  95. a=fopen("datos.txt","r");
  96. *c=0;
  97.  
  98.     printf("MATRICULA \t\t  APELLIDO  \t\t CARRERA \t\t ANO \t\t PROMEDIO\n");
  99.     fflush(stdin);
  100.     fscanf(a,"%s %s %s %d %f", R[*c].matri, R[*c].apel, R[*c].codigo, &R[*c].anio, &R[*c].prom);
  101.  
  102.     while (!feof(a))
  103.         {
  104.              printf("%s \t\t\t  %s \t\t  %s \t\t  %d \t\t  %0.2f \n", R[*c].matri, R[*c].apel, R[*c].codigo, R[*c].anio, R[*c].prom);
  105.             (*c)++;
  106.             fflush(stdin);
  107.             fscanf(a,"%s %s %s %d %f", R[*c].matri, R[*c].apel, R[*c].codigo, &R[*c].anio, &R[*c].prom);
  108.  
  109.         }
  110.     fclose(a);
  111.     printf("\n");
  112. }
  113.  
  114. void muestraarreglo(struct alumno R[], int c){
  115.  
  116.  int i;
  117.  
  118.     printf("MATRICULA \t\t  APELLIDO  \t\t CARRERA \t\t ANO \t\t PROMEDIO\n");
  119.  
  120.     for (i=0;i<c;i++){
  121.  
  122.         printf("%s \t\t\t  %s \t\t  %s \t\t  %d \t\t  %0.2f \n", R[i].matri, R[i].apel, R[i].codigo, R[i].anio, R[i].prom);
  123.  
  124.             }
  125.  
  126.  
  127.  
  128.     printf("\n");
  129.  
  130.   }
  131.  
  132. void alumnosporcarrera(struct alumno R[],int c){
  133.  
  134. char carreras[3][7]={"Sist01","Dise01","Mark03"};
  135. int can,i, j, v[3]={0,0,0};
  136.  
  137.  
  138.     for (i=0;i<c;i++){
  139.         j=obtieneindice(carreras, R[i].codigo);
  140.         ++v[j];
  141.         }
  142.  
  143.     printf("Carrera \t\t Cantidad de alumnos\n");
  144.  
  145.     for (i=0;i<3;i++)
  146.         printf("%s \t\t %d\n",carreras[i],v[i]);
  147.  
  148.     printf("\n");
  149. }
  150.  
  151.  
  152. int obtieneindice(char tabla[][7], char cod[]){
  153.  int i=0;
  154.  
  155.     while (strcmp(cod,tabla[i]))
  156.         i++;
  157.  
  158.  return i; }
  159.  
  160.  
  161. void mejorpromedio(struct alumno R[],int c) {
  162.  
  163. int i, mayor=0;
  164. struct alumno aux;
  165.  
  166.         for (i=0;i<c;i++){
  167.             if ((R[i].prom)>mayor){
  168.             mayor=R[i].prom;
  169.             aux=R[i];
  170.                 }
  171.             }
  172.  
  173.     printf("El alumno con mayor promedio es %s, de la carrera: %s, con un promedio de %0.2f \n",aux.apel,aux.codigo,aux.prom);
  174.  
  175.     printf("\n");
  176.  }
  177.  
  178. void echaralumno(struct alumno R[], int *c){
  179.  
  180. int peor,i=0,j;
  181.  
  182.     peor=peorpromedio(R,c);
  183.  
  184.  
  185.     while(i!=peor)
  186.         i++;
  187.  
  188.     for(j=i;j<*c-1;j++)
  189.         R[j]=R[j+1];
  190.  
  191.     (*c)--;
  192.  
  193.     printf("La nueva lista de alumnos es:/n");
  194.  
  195.     muestraarreglo(R,c);
  196.  
  197. }
  198.  
  199. int peorpromedio(struct alumno R[],int c) {
  200.  
  201. int i, aux, menor=999;
  202.  
  203.         for (i=0;i<c;i++){
  204.             if ((R[i].prom)<menor){
  205.                 menor=R[i].prom;
  206.                 aux=i;
  207.                 }
  208.                 }
  209.  
  210. return aux;
  211.  }
  212.  
  213. void cambiodecacarrera(struct alumno R[], int c){
  214.  
  215. char matricula[15],codi[10];
  216. int i;
  217.  
  218.         printf("Ingrese la matricula del alumno que quiere cambiarse de carrera\n");
  219.         fflush(stdin);
  220.         gets(matricula);
  221.         printf("Ingrese el codigo de la carrera a la que desea cambiarse\n");
  222.         fflush(stdin);
  223.         gets(codi);
  224.  
  225.         for (i=0;i<c;i++){
  226.             if (strcmp(matricula,R[i].matri))
  227.                 strcpy(R[i].codigo,codi);
  228.  
  229.                 }
  230.  
  231.         printf("La nueva lista de alumnos es:/n");
  232.         muestraarreglo(R,c);
  233.  
  234. }
  235.  
  236. void masviejo(struct alumno R[], int c){
  237.  
  238. int i, fecha=2018;
  239. struct alumno aux;
  240.  
  241.         for (i=0;i<c;i++){
  242.             if ((R[i].anio)<fecha){
  243.             fecha=R[i].anio;
  244.             aux=R[i];
  245.                 }
  246.                 }
  247.  
  248.         printf("El alumno mas antiguo es %s, de la carrera: %s, quien asiste desde el %d \n",aux.apel,aux.codigo,aux.anio);
  249.  
  250.         printf("\n");
  251. }
  252.  
  253.  
  254. void creaarchivo (struct alumno R[],int c){
  255.  
  256. FILE *a;
  257. int i;
  258.  
  259.     a=fopen("datoscopia.txt","w");
  260.  
  261.         if(a)
  262.           fwrite(R,sizeof(struct alumno),c,a);
  263.  
  264.  
  265.         fclose(a);
  266.  
  267.     printf("Archivo creado exitosamente\n");
  268.     printf("\n");
  269. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement