http://cur.lv/4x9e0 (Earn Bitcoins) // HEADER #ifndef studentimatricolaesame_studente_h #define studentimatricolaesame_studente_h #include #include #include typedef struct elem{ int voto; struct elem* next; } esame; typedef char string[5]; typedef struct elems{ string matricola; esame* info; struct elems* next; } studente; typedef studente* studenti; studenti inseriscistudente(studenti); void aggiungivoto(esame*); void stampa(studenti); #endif // COMPILATO #include "studente.h" studenti inseriscistudente(studenti l){ studente* nuovo = malloc(sizeof(studente)); nuovo->next = NULL; printf("Inserire matricola: "); string m; scanf("%s", m); strcpy(nuovo->matricola, m); esame* p = malloc(sizeof(esame)); p->next = NULL; printf("Inserire voto: "); scanf("%d",&p->voto); nuovo->info=p; printf("Continuare? y/n\n"); char risposta='y'; scanf(" %c", &risposta); while (risposta=='y' || risposta=='Y'){ aggiungivoto(nuovo->info); printf("Continuare? y/n\n"); scanf(" %c", &risposta); } return l; } void aggiungivoto(esame* l){ esame* v = malloc(sizeof(esame)); v->next = NULL; printf("Inserire voto: "); scanf("%d",&v->voto); while (l->next!=NULL) l=l->next; l->next=v; } void stampaesami(esame* l){ while (l!=NULL){ printf("%d ", l->voto); l=l->next; } } void stampa(studenti l){ while (l!=NULL){ printf("Matricola: %s\n", l->matricola); printf("Voti dello studente: "); stampaesami(l->info); printf("\n"); l=l->next; } } // MAIN int main(int argc, const char * argv[]) { studenti scemi = malloc(sizeof(studente)); strcpy(scemi->matricola,"AB123"); esame* esami = malloc(sizeof(esame)); esami->voto = 3; scemi->info = esami; stampa(scemi); printf("\n"); inseriscistudente(scemi); printf("\n"); stampa(scemi); return 0; }