Yo fui quien preguntó sobre el programa de lenguaje C esta mañana.
Modifica el siguiente código. Aprendí a compilarlo cuando estaba estudiando antes. ¡Creo en tu coeficiente intelectual!
#include
#include
#include
# incluir
#include
#define LEN sizeof(struct Student)
#define FORMAT "%-8d% -15s%-12.1lf%-12.1lf%-12.1lf%-12.1lf\n"
#define DATOS estu[i].num,stu[i].nombre,stu[i]. elec,stu[i].expe,stu[i].requ,stu[i].sum
float Felec,Fexpe,Frequ;
estructurar estudiante/*definir el desempeño del estudiante Estructura*/
{
int num;/*número de estudiante*/
char nombre[15];/*nombre*/
doble elec;/*Cursos electivos*/
doble expe;/*Cursos experimentales*/
doble requ;/*Cursos obligatorios*/
suma doble;/*Puntuación total*/
};
estructura estudiante estu[50];/*Definir matriz de estructura*/
vacío en () ;/*Ingresar información de puntuación del estudiante*/
void show();/*Mostrar información del estudiante*/
void order();/*Ordenar por puntuación total*/ p>
void del();/*Eliminar información de desempeño del estudiante*/
void modificar();/*Modificar información de desempeño del estudiante*/
void menu( ); /*Menú principal*/
void insert();/*Insertar información del estudiante*/
void total();/*Calcular el número total de personas*/
void search();/*Buscar información del estudiante*/
void main()/*Función principal*/
{
int n
menu();
scanf("%d",&n);/*Ingrese el número de la función seleccionada*/
while(n ) p>
{
switch(n)
{
caso 1:
in();
ruptura;
caso 2:
búsqueda();
ruptura;
caso 3: p>
del();
romper;
caso 4:
modificar();
romper; p>
caso 5:
insertar();
romper;
caso 6:
ordenar();
ruptura;
caso 7:
total();
ruptura;
predeterminado: ruptura;
}
getch()
;
menu();/*Mostrar la interfaz del menú nuevamente después de ejecutar la función*/
scanf("%d",&n);
} p>
}
void in()/*Ingresar información del estudiante*/
{
int i,m=0;/* m es el número de registros*/
char ch[2];
FILE *fp;/*Definir puntero de archivo*/
if((fp= fopen ("data","ab+"))==NULL)/*Abrir el archivo especificado*/
{
printf("no se puede abrir\n");
return;
}
while(!feof(fp))
{
if(fread( &stu[ m] ,LEN,1,fp)==1)
m++;/*Cuenta el número actual de registros*/
}
fclose (fp) ;
if(m==0)
printf("¡Sin registro!\n");
else
{
system("cls");
show();/*Llame a la función show para mostrar la información original*/
} p>
if((fp=fopen("data","wb"))==NULL)
{
printf("no se puede abrir\n") ;
return;
}
for(i=0;i fwrite(&stu[i] ,LEN,1 ,fp);/*Escribe información en el archivo de disco especificado*/ printf("por favor ingrese(s/n):"); scanf(" %s" ,ch); if(strcmp(ch,"Y")==0||strcmp(ch,"y")==0) { printf("ingrese porcentaje:"); printf("\nelective:"); scanf("%f",&Felec); printf("\nexperiment:"); scanf("%f",&Fexpe); printf("\ncurso requerido:"); scanf("%f",&Frequ); } while(strcmp(ch,"Y")==0||strcmp(ch ,"y ")==0)/*Determinar si se ingresa nueva información*/ { printf("número:"); scanf ("% d",&stu[m].num);/*Ingrese el número de estudiante*/ for(i=0;i if(stu [i ].num==stu[m].num) { printf("el número existe, ¡presiona cualquiera para continuar!"); getch(); fclose(fp); retorno; } printf("nombre:"); scanf("%s",stu[m].name);/*Ingrese el nombre del estudiante*/ printf("elective:"); scanf("%lf",&stu[m].elec);/*Ingrese los resultados del curso optativo*/ printf(" experiment:"); scanf("%lf",&stu[m].expe);/*Ingrese los resultados del curso experimental*/ printf("curso requerido:" ) ; scanf("%lf",&stu[m].requ);/*Ingrese los puntajes requeridos del curso*/ stu[m].sum=stu[m ]. elec*Felec+stu[m].expe*Fexpe+stu[m].requ*Frequ;/*Calcular la puntuación total*/ if(fwrite(&stu[m],LEN, 1, fp)!=1)/*Escribe la información recién ingresada en el archivo de disco especificado*/ { printf("can not save!" getch(); } else { printf("¡%s guardados!\n", stu [m].name); m++; } printf("continue?(s/n):");/*Preguntar si para continuar */ scanf("%s",ch); } fclose(fp); printf( "OK !\n"); } void show() { ARCHIVO *fp; int i,m=0; fp=fopen("data","ab+"); while(!feof(fp)) { if(fread(&stu[m] ,LEN,1,fp)==1) m++; } fclose(fp); printf("número nombre experimento electivo suma requerida\t\n"); for(i=0;i { printf(FORMAT,DATA);/*Imprime la información en el formato especificado*/ } } void menu()/*Función personalizada para implementar la función del menú*/ { system("cls"); printf ("\ n\n\n\n\n"); printf("\t\t|-------------------- ----ESTUDIANTE- ------------------|\n"); printf("\t\t|\t 0. salir |\n"); printf("\t\t|\t 1. registro de entrada |\n"); printf("\t\t |\t 2. buscar registro |\n"); printf("\t\t|\t 3. eliminar registro |\n"); printf(" \t\t|\t 4. modificar registro |\n"); printf("\t\t|\t 5. insertar registro |\n"); printf("\t\t|\t 6. orden |\n"); printf("\t\t|\t 7. número |\n"); printf("\t\t|--------------------------------- --------|\n\n"); printf("\t\t\tchoose(0-7):"); } void order()/*Función de clasificación personalizada*/ { ARCHIVO *fp; struct Student t; p > int i=0,j=0,m=0; if((fp=fopen("data","ab+"))==NULL) { printf("¡no se puede abrir!\n"); return; } while(!feof ( fp)) if(fread(&stu[m] ,LEN,1,fp)==1) m++; fclose(fp) ; if(m==0) { printf("¡sin registro!\n"); return } for(i=0;i for(j=i+1;j if(stu[i].sum { t =stu[i]; stu[i]=stu[j]; stu[j]=t; } if((fp=fopen("data","wb"))==NULL) { printf("no se puede abrir\n"); p> return; } for(i=0;i if(fwrite(&stu[i] ,LEN,1,fp)!=1) { printf("¡%s no puede guardar!\n "); getch(); } fclose(fp); printf("guardar exitosamente\n"); } void del()/*función de eliminación personalizada*/ { ARCHIVO * fp ; int snum,i,j,m=0; char ch[2]; if((fp=fopen("datos" , "ab+"))==NULL) { printf("no se puede abrir\n"); return; } while(!feof(fp)) if(fread(&stu[m],LEN,1,fp)==1) m++; fclose(fp); if(m==0) { printf("¡sin registro! \ n"); return; } printf("ingrese el número:"); scanf(" % d",&snum); for(i=0;i if(snum==stu[i].num) romper; if(i==m) { printf("no se puede encontrar"); getchar ( ); return; } printf("¿encontrar al estudiante, eliminarlo?(s/n)"); scanf("%s",ch); if(strcmp(ch,"Y")==0||strcmp(ch,"y")==0)/*Determinar si se debe eliminar */ { for(j=i;j stu[j]=stu[j+1] /* Mover el siguiente registro a la posición del registro anterior*/ m--;/*El número total de registros se reduce en 1*/ printf("¡eliminación exitosa! \n"); } if((fp=fopen("data","wb"))==NULL) { p> printf("no se puede abrir\n"); return; } for(j=0;j if(fwrite(&stu[j] ,LEN,1,fp)!=1) { printf("¡no se puede guardar!\n"); getch(); } fclose( fp); } búsqueda vacía()/*función de búsqueda personalizada*/ { ARCHIVO *fp; int snum,i,m=0; char ch[2]; if((fp=fopen("data","ab+") )==NULL) { printf("no se puede abrir\n"); return; } while(!feof(fp)) if(fread(&stu[m],LEN,1,fp)==1) m++; fclose(fp); if(m ==0) { printf("¡sin registro!\n"); return; } printf("por favor ingrese el número:"); scanf("%d",&snum); for(i=0;i if(snum==stu[i].num)/*Compruebe si el número de estudiante ingresado está en el registro*/ { printf ( "encontrar al estudiante,mostrar?(s/n)"); scanf("%s",ch); if(strcmp(ch,"Y") = =0||strcmp(ch,"y")==0) { printf("número nombre experimento electivo suma requerida\t\n"); p > printf(FORMAT,DATA);/*Enviar los resultados encontrados en el formato especificado*/ break; } else return; } if(i==m) printf("¡No puedo encontrar al estudiante!\n") ;/*La información que buscas no fue encontrada*/ } void modificar()/*Función de modificación personalizada*/ { p> ARCHIVO *fp; int i,j,m=0,snum; if((fp=fopen("data","ab+")) == NULL) { printf("no se puede abrir\n"); return; } while(!feof(fp)) if(fread(&stu[m],LEN,1,fp)==1) m++; if(m==0) { printf("¡sin registro!\n"); fclose(fp); return; } printf("¡Ingrese el número del estudiante que desea modificar!\n"); scanf("%d",&snum); for(i=0;i if(snum==stu[i].num) /* Recuperar si hay información a modificar en el registro*/ break; if(i { printf( "fin d el estudiante!¡puedes modificarlo!\n"); printf("por favor ingresa el porcentaje:"); printf("\nelective:"); scanf("%f",&Felec); printf("\nexperiment:"); scanf("%f",&Fexpe); printf("\ncurso requerido:"); scanf("%f",&Frequ); printf("nombre:\n"); p> scanf("%s",stu[i].name);/*Ingrese nombre*/ printf("\nelective:"); scanf ("%lf",&stu[i].elec);/*Ingrese los puntajes de los cursos optativos*/ printf("\nexperiment:"); scanf("%lf ",&stu[i].expe);/*Ingrese los resultados del curso experimental*/ printf("\ncurso requerido:"); scanf("%lf",&stu [i].requ);/*Ingrese los resultados del curso requeridos*/ stu[i].sum=stu[i].elec*Felec+stu[i].expe*Fexpe+stu[ i ].requ*Frequ; } else { printf("¡No se puede encontrar!"); p > getchar(); return; } if((fp=fopen("data","wb"))= = NULL) { printf("no se puede abrir\n"); return; } for(j=0;j if(fwrite(&stu[j] ,LEN,1, fp )!=1) { printf("¡No se puede guardar!"); getch(); /p> fclose(fp); } void insert()/*función de inserción personalizada*/ { ARCHIVO *fp; int i,j,k,m=0,snum; if((fp=fopen("data","ab+") )= =NULL) { printf("no se puede abrir\n"); return; } p> while(!feof(fp)) if(fread(&stu[m],LEN,1,fp)==1) m++; p> if(m==0) { printf("¡sin registro!\n"); fclose(fp); return; } printf("¡Ingrese la posición donde desea insertar! (Ingrese el número)\n" ); scanf("%d",&snum);/*Ingrese la posición a insertar*/ for(i=0;i if(snum==stu[i].num) descanso; for(j=m-1;j>i;j--)< / p> stu[j+1]=stu[j];/*Mover una posición hacia atrás desde el último registro*/ printf("ahora ingrese la nueva información.\ n" ); printf("número:"); scanf("%d",&stu[i+1].num); for( k=0;k if(stu[k].num==stu[i+1].num&&k!=i+1) { printf("el número existe, ¡presione cualquiera para continuar!"); getch(); fclose(fp); return; } printf("ingrese el porcentaje:"); printf("\nelective:"); scanf("%f",&Felec); printf("\nexperiment:"); scanf("%f",&Fexpe); p> printf("\ncurso requerido:"); scanf("%f",&Frequ); printf("nombre:\n"); scanf("%s",stu[i+1].nombre); printf("\nelective:"); scanf("% lf",&stu[i+1].elec); printf("\nexperiment:"); scanf("%lf",&stu[i+1]. expe); printf("\ncurso requerido:"); scanf("%lf",&stu[i+1].requ); stu[i+1].sum=stu[i+1].elec*Felec+stu[i+1].expe*Fexpe+stu[i+1].requ*Frequ; if((fp=fopen("data","wb"))==NULL) { printf("no se puede abrir\n"); retorno; } para(k=0;k<=m;k++) if(fwrite(&stu[k] ,LEN,1,fp)!=1)/*Escribe el registro modificado en el archivo del disco*/ { printf( "can ¡no guardar!"); getch(); } fclose(fp); } void total() { ARCHIVO *fp; int m=0; if((fp =fopen ("data","ab+"))==NULL) { printf("no se puede abrir\n"); return ; } while(!feof(fp)) if(fread(&stu[m],LEN,1,fp)==1) p> m++;/*El número de registros estadísticos es el número de estudiantes*/ if(m==0) { printf("¡sin registro!\n"); fclose(fp); return; } printf(" ¡la clase son %d estudiantes!\n",m);/*Importe el número contado*/ fclose(fp); }