Red de conocimiento informático - Conocimiento informático - Completar un programa de práctica de matemáticas en la escuela primaria (programación en lenguaje C)

Completar un programa de práctica de matemáticas en la escuela primaria (programación en lenguaje C)

#include

#include

#include

# define MENU_NUM 7

#define N 3

typedef struct s1

{

char no[11] /*El número de estudiante es dado por Compuesto por 10 caracteres*/

char name[15] /*Nombre del estudiante*/

float score[N] /*Puntuación de cada curso*/

suma flotante; /*puntuación total*/

promedio flotante; /*puntuación promedio*/

int orden; p> struct s1 *next; /*Puntero al nodo siguiente*/

}ESTUDIANTE; /*Definir tipo de estructura*/

ESTUDIANTE * head=NULL;

void InputData( ESTUDIANTE * ptr );

void PrintMenu( );

int Menu_Select( );

void Init( );

void create( );

void print( ) ;

void Delete( );

void append();

void computadora();

main()

{

tecla int;

while(1) {

tecla=Menu_Select();

cambiar(tecla)

{

caso 0: Init();

/ /Inicializar la lista enlazada.

Es decir, si la lista vinculada no está vacía, libere todos los datos de la lista vinculada y establezca el encabezado en vacío (NULL)

break;

caso 1: create() ;

//Crea una lista enlazada e ingresa datos

break;

caso 2: Eliminar();

//Eliminar los datos de registro de un número de estudiante específico

break;

caso 3: print();

//Imprime todos los datos en la lista vinculada

break;

caso 4: computadora();

// Calcula la puntuación total y la puntuación promedio de todos en la lista vinculada

break;

caso 5: append( );

//Agregar datos al final de la lista enlazada

break;

caso 6: Init();

// Liberar la lista enlazada

exit(0);

}

};

}

void PrintMenu( )

{

int i;

char * menú[]= {

"0. Lista de inicio",

"1. Ingresar a la lista",

"2. Eliminar un registro de la lista",

"3. Imprimir lista",

"4 . Calcular la puntuación",

"5. Insertar registro en la lista",

"6 Salir"

};

printf("\n\n");

for (i=0;i

printf("%s\n",menu[i]) ;

printf("\nIngrese su elección(0-6):");

}

int Menu_Select( )

{

tecla int;

PrintMenu( );

scanf( "%d",&key);

tecla de retorno;

}

void Init() //Inicializa una lista enlazada individualmente.

Es decir, liberar todos los datos en la lista vinculada

{

ESTUDIANTE *p,*ptr;//Definir dos variables de puntero temporales p,ptr

p= head;ptr=head;// Apunta dos variables temporales al puntero principal head;

while(ptr!=NULL)

{

ptr=ptr ->next;//ptr apunta a los siguientes datos estructurales

free(p);//Libera la memoria de los datos estructurales señalados por p

p =ptr;//Reemplazar p Apunte a los datos señalados por ptr

}

head=NULL;//Apunte el encabezado a NULL

}

void create() //Crea una lista enlazada individualmente

{

ESTUDIANTE *pt, *pth=NULL //Define dos variables de puntero: pt apunta a; la nueva memoria de datos que se solicitará y pth apunta a los datos actuales

while(1)

{

pt=(STUDENT *)malloc( sizeof(STUDENT));// Deje que pt apunte al espacio de memoria recién aplicado

InputData(pt);// Los datos de entrada se almacenan en los datos de estructura señalados por pt.

Tenga en cuenta que el siguiente de pt apunta a NULL

if (strcmp(pt->no,"@")==0)

{

free(pt ) ;//Liberar el espacio de memoria señalado por pt

break;//Salir del bucle

}

else if (head==NULL)

{

pth=pt;

head=pt;//Apunte los punteros head y pth a pt

}

else

{

pth->next=pt; //Apunta el siguiente de pth a pt;

pth=pt; Apunte pth a pt ;

}

};

}

void print() //Imprime todos los datos de forma individual lista enlazada

{ int i=0;

ESTUDIANTE *p;//El primer puntero p

p=head;//Punto p al encabezado

printf("\n");

printf("*************************** ****ESTUDIANTE* *******************************\n");

printf ("|rec|no | nombre | sc1| sc2| sc3| suma | ave |orden|\n");

printf("|---|--------- -|------ ----------|----|----|----|------|-----|--- --|\n");

//Imprimir encabezado

while (p!=NULL)

{

printf( "|%3d|%10s |%-16s|%4.1f|%4.1f|%4.1f|%6.2f|%5.1f|%5d|\n",

++i, p->no,p- >nombre,p->puntuación[0],p->puntuación[1],p->puntuación[2],

p->suma,p->promedio ,p->order); //Imprime todos los datos en la estructura señalada por p.

Preste atención a las líneas divisorias entre los datos de impresión

p=p->next;//Apunte p a los siguientes datos estructurales de p

}

printf (" *********************************FIN************** ***** ****************\n");//Imprimir el final de la tabla

}

void Eliminar ( ) //Eliminar un registro

{

ESTUDIANTE *p,*pth;//Definir dos punteros p,pth

char no[11]; //Definir un número entero no( Se utiliza para almacenar el número de estudiante ingresado)

printf("intput delete no\n");

scanf("%s",no); //Utilice la declaración de entrada para ingresar uno. Almacene el número de estudiante en no

p=head;pth=head;//Apunte tanto p como pth al puntero principal

if ( strcmp(p->no,no)= =0) //Es decir, si es necesario eliminar los datos señalados por el puntero principal

{

head=head- >next;//Apunta el puntero principal al siguiente dato de head;

free(p);//Libera los datos señalados por p

}

else

{

p=p->next;//Apunta p al siguiente dato de p

while ( p!=NULL)

{

if (strcmp( p->no,no)==0) //Se encontraron los datos a eliminar

{

pth->next=p->next; //Cambia el siguiente de pth next que apunta a p

free(p);//Libera p

break;/ /Salir del bucle

}

else

{

pth=pth->next;//Apunta pth al siguiente de pth o apuntar pth a p

p=p->next;// Señalar p al siguiente de p

}

}

}

}

void append()

{

ESTUDIANTE *p,*pth;//Defina dos variables de puntero p, pth

pth=head;//Apunta pth a la cabeza

while ( pth->next!=NULL)

{

pth=pth->next;//ptr apunta al siguiente de ptr

}

p=(STUDENT *)malloc(sizeof(STUDENT));//Apunta p a el espacio de memoria recién aplicado

InputData(p);p->next= NULL;//Los datos se almacenan en el espacio de memoria señalado por p. Configure el siguiente de p en NULL

pth->next=p;//Apunta el siguiente de ptr a p

}

void InputData( STUDENT *ptr )

<

p>{ int i;

printf("ingrese no:");

scanf("%s",ptr->no);

si (strcmp(ptr->no,"@")==0 ) return;

printf("ingrese nombre:");

scanf("%s",ptr- >nombre);

for(i=0;i<3;i++)

{

printf("shuru chengji\n");

scanf("%f",&ptr->puntuación[i]);

}

ptr->sum=0;

ptr->promedio=0;

ptr->pedido=0;

ptr->siguiente=NULL;

}

void computer()

{

ESTUDIANTE *p;

p=cabeza;

for(;p;p=p- >siguiente)

{

p->sum=p->puntuación[0]+p->puntuación[1]+p->puntuación[2];

p->promedio=(p->puntuación[0]+p->puntuación[1]+p->puntuación[2])/3;

}

}