Codice completo.
#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[DIM];
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;
int valore;
int somma=0;
double media=0.0;
int i=0;
int min=0;
int max=0;
stud_p head=NULL;
while(cont){
valore=0;
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,DIM);
sscanf(buffer_voto, "%d", &valore);
min=max=valore;
if (valore<min) min=valore;
if (valore>max) max=valore;
somma=somma+valore;
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);
i++;
}
printf("La somma e'%d :",somma);
printf("Il minimo e'%d :",min);
printf("Il massimo e'%d :",max);
printf("Il indice e'%d :",i);
media=somma/i;
printf("\n\n");
printf("La somma e'%f :",media);
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;
}
}