Avete ragione ho formulato la lista in questione.
Adesso io mi chiedo , se volessi calcolare la media dei voti inseriti , come potrei procedere?
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define DIM 50
#define FILENAME "test.dat"
struct stud{
char nome[DIM];
char cognome[DIM];
char voto[2];
struct stud *next;
};
typedef struct stud *stud_p;
void print_list(stud_p p);
int mygetline(char buffer_line[],int Max_l);
stud_p Add_to_list(stud_p head,char nome[],char cognome[],char voto[]);
main(){
char buffer_nome[DIM];
char buffer_cognome[DIM];
char buffer_voto[DIM];
int cont;
stud_p head=NULL;
while(cont){
printf("Inserire nome alunno :");
mygetline(buffer_nome,DIM);
if(strcmp(buffer_nome,"exit")==0)
break;
printf("Inserire cognome alunno :");
mygetline(buffer_cognome,DIM);
if(strcmp(buffer_cognome,"exit")==0)
break;
printf("Inserire voto alunno :");
mygetline(buffer_voto,2);
if(strcmp(buffer_voto,"exit")==0)
break;
printf("\n\nPer terminare digitare exit. . .\n\n");
if(strcmp(buffer_nome,"")!=0&&strcmp(buffer_cognome,"")!=0&&strcmp(buffer_voto,"")!=0)
head=Add_to_list(head,buffer_nome,buffer_cognome,buffer_voto);
print_list(head);
}
system("pause");
}
void print_list(stud_p p)
{
if(p!=NULL)
{
printf("\n%4s %4s %4s \n\n",p->nome,p->cognome,p->voto);
p=p->next;
print_list(p);
}
}
int mygetline(char buffer_line[],int Max_l)
{
int c,i;
i=0;
while((c=getchar())!='\n'&&i<Max_l)
buffer_line[i++]=c;
buffer_line[i]='\0';
return i;
}
stud_p Add_to_list(stud_p head,char nome[],char cognome[],char voto[])
{
stud_p p;
stud_p curr;
p=(stud*)malloc(sizeof(stud));
strcpy(p->nome,nome);
strcpy(p->cognome,cognome);
strcpy(p->voto,voto);
p->next=NULL;
if(head==NULL)
return p;
else
{
curr=head;
while(curr->next!=NULL)
curr=curr->next;
curr->next=p;
return head;
}
}