Red de conocimiento informático - Espacio del host - Yo fui quien preguntó sobre el programa de lenguaje C esta mañana.

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*/

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 )

{

switch(n)

{

caso 1:

in();

ruptura;

caso 2:

búsqueda();

ruptura;

caso 3:

del();

romper;

caso 4:

modificar();

romper;

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);

}

}

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*/

}

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;

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");

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)

{

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");

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*/

{

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");

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!");

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;

}

while(!feof(fp))

if(fread(&stu[m],LEN,1,fp)==1)

m++;

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:");

p>

scanf("%f",&Felec);

printf("\nexperiment:");

scanf("%f",&Fexpe);

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)

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);

}