Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- main.c
- Hoy
- 16:20
- Evangelina Segesser Ferreyra subió un elemento
- C
- main.c
- #include <stdio.h>
- #include <stdlib.h>
- #define MAX 20
- #define LINEA 1024
- typedef struct alumno{
- char matri[4], apel[10], codigo[7];
- int anio;
- float prom;};
- void cargaymuestraarchivo (struct alumno R[], int *c);
- void muestraarreglo(struct alumno R[], int c);
- void alumnosporcarrera(struct alumno R[],int c);
- int obtieneindice(char tabla[][7], char cod[]);
- void mejorpromedio(struct alumno R[],int c);
- void echaralumno(struct alumno R[], int *c);
- void cambiodecacarrera(struct alumno R[], int c);
- void masviejo(struct alumno R[], int c);
- void creaarchivo (struct alumno R[],int c);
- void main(){
- struct alumno A[MAX];
- int n,cant, opcion;
- fflush(stdin);
- cargaymuestraarchivo(A,&cant);
- printf("Que accion desea realizar?\n");
- do
- { printf( " 1. Mostrar el listado de alumnos y sus datos. \n ");
- printf( " 2. Calcular y mostrar el total de alumnos por carrera. \n ");
- printf( " 3. Calcular el mejor promedio. \n ");
- printf( " 4. Calcular el promedio mas bajo y eliminar el alumno de la institucion.\n ");
- printf( " 5. Buscar un alumno por su matricula y modificar su carrera.\n ");
- printf( " 6. Informar el alumno con mayor antiguedad en la institucion.\n ");
- printf( " 7. Crear un archivo nuevo con el listado modificado. \n ");
- printf( " 8. Salir. \n \n " );
- printf( " Introduzca opcion (1-7): \n ");
- scanf( "%d", &opcion );
- switch ( opcion )
- {
- case 1: muestraarreglo(A,cant);
- break;
- case 2: alumnosporcarrera(A,cant);
- break;
- case 3: mejorpromedio(A,cant);
- break;
- case 4: echaralumno(A,cant);
- break;
- case 5: cambiodecacarrera(A,cant);
- break;
- case 6: masviejo(A,cant);
- break;
- case 7: creaarchivo(A,cant);
- break;
- }
- } while ( opcion != 8 );
- }
- void cargaymuestraarchivo(struct alumno R[],int *c){
- FILE *a;
- a=fopen("datos.txt","r");
- *c=0;
- printf("MATRICULA \t\t APELLIDO \t\t CARRERA \t\t ANO \t\t PROMEDIO\n");
- fflush(stdin);
- fscanf(a,"%s %s %s %d %f", R[*c].matri, R[*c].apel, R[*c].codigo, &R[*c].anio, &R[*c].prom);
- while (!feof(a))
- {
- 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);
- (*c)++;
- fflush(stdin);
- fscanf(a,"%s %s %s %d %f", R[*c].matri, R[*c].apel, R[*c].codigo, &R[*c].anio, &R[*c].prom);
- }
- fclose(a);
- printf("\n");
- }
- void muestraarreglo(struct alumno R[], int c){
- int i;
- printf("MATRICULA \t\t APELLIDO \t\t CARRERA \t\t ANO \t\t PROMEDIO\n");
- for (i=0;i<c;i++){
- 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);
- }
- printf("\n");
- }
- void alumnosporcarrera(struct alumno R[],int c){
- char carreras[3][7]={"Sist01","Dise01","Mark03"};
- int can,i, j, v[3]={0,0,0};
- for (i=0;i<c;i++){
- j=obtieneindice(carreras, R[i].codigo);
- ++v[j];
- }
- printf("Carrera \t\t Cantidad de alumnos\n");
- for (i=0;i<3;i++)
- printf("%s \t\t %d\n",carreras[i],v[i]);
- printf("\n");
- }
- int obtieneindice(char tabla[][7], char cod[]){
- int i=0;
- while (strcmp(cod,tabla[i]))
- i++;
- return i; }
- void mejorpromedio(struct alumno R[],int c) {
- int i, mayor=0;
- struct alumno aux;
- for (i=0;i<c;i++){
- if ((R[i].prom)>mayor){
- mayor=R[i].prom;
- aux=R[i];
- }
- }
- 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);
- printf("\n");
- }
- void echaralumno(struct alumno R[], int *c){
- int peor,i=0,j;
- peor=peorpromedio(R,c);
- while(i!=peor)
- i++;
- for(j=i;j<*c-1;j++)
- R[j]=R[j+1];
- (*c)--;
- printf("La nueva lista de alumnos es:/n");
- muestraarreglo(R,c);
- }
- int peorpromedio(struct alumno R[],int c) {
- int i, aux, menor=999;
- for (i=0;i<c;i++){
- if ((R[i].prom)<menor){
- menor=R[i].prom;
- aux=i;
- }
- }
- return aux;
- }
- void cambiodecacarrera(struct alumno R[], int c){
- char matricula[15],codi[10];
- int i;
- printf("Ingrese la matricula del alumno que quiere cambiarse de carrera\n");
- fflush(stdin);
- gets(matricula);
- printf("Ingrese el codigo de la carrera a la que desea cambiarse\n");
- fflush(stdin);
- gets(codi);
- for (i=0;i<c;i++){
- if (strcmp(matricula,R[i].matri))
- strcpy(R[i].codigo,codi);
- }
- printf("La nueva lista de alumnos es:/n");
- muestraarreglo(R,c);
- }
- void masviejo(struct alumno R[], int c){
- int i, fecha=2018;
- struct alumno aux;
- for (i=0;i<c;i++){
- if ((R[i].anio)<fecha){
- fecha=R[i].anio;
- aux=R[i];
- }
- }
- printf("El alumno mas antiguo es %s, de la carrera: %s, quien asiste desde el %d \n",aux.apel,aux.codigo,aux.anio);
- printf("\n");
- }
- void creaarchivo (struct alumno R[],int c){
- FILE *a;
- int i;
- a=fopen("datoscopia.txt","w");
- if(a)
- fwrite(R,sizeof(struct alumno),c,a);
- fclose(a);
- printf("Archivo creado exitosamente\n");
- printf("\n");
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement