codice:
#include <stdio.h>
#include <conio.h>
#define MAXCHAR 30
#define MAXSTUDENTI 200
// definizioni di tipi: mettiamole PRIMA del main
typedef char stringa [MAXCHAR];
typedef struct {
stringa via;
int numCivico;
} tIndirizzo;
typedef struct {
stringa nome;
tIndirizzo indiriz;
int voto;
} tStudente;
typedef struct {
tStudente elenco [MAXSTUDENTI];
int numEffettivoStudenti;
} tClasse;
int main () {
char carLetto;
char inutile;
int i;
tClasse myClass; // un'istanza del tipo tClasse!
tStudente studLetto; // per l'inserimento
myClass.numEffettivoStudenti = 0;
do {
printf ("*** MENU PRINCIPALE ***\n\n");
printf ("scegli la tua opzione:\n");
printf ("1: inserisci uno studente nella classe\n");
printf ("2: visualizza tutta la listozza di studenti\n");
printf ("3: svuota il listone\n");
printf ("4: uscita\n\n");
// filtro l'input
do carLetto = getch(); while (carLetto < '1' || carLetto > '4');
switch (carLetto) {
case '1':
printf ("***INSERIMENTO DI UNO STUDENTE***\n\n");
printf ("inserisci il nome: ");
scanf ("%s", studLetto.nome);
printf ("inserisci la via: ");
scanf ("%s", studLetto.indiriz.via);
printf ("inserisci il num. civico: ");
scanf ("%d", &studLetto.indiriz.numCivico);
printf ("inserisci il voto: ");
scanf ("%d", &studLetto.voto);
myClass.elenco[myClass.numEffettivoStudenti]=studLetto;
myClass.numEffettivoStudenti++;
// nota bene: manca il test per vedere se e' gia' pieno, andrebbe aggiunto
printf ("\n\nPREMI UN TASTO PER CONTINUARE");
inutile = getch(); break;
case '2':
printf ("***LISTA TOTALE GLOBALE DEGLI STUDENTI***\n\n");
if (myClass.numEffettivoStudenti == 0)
printf ("La lista e' vuota!");
for (i=0; i<myClass.numEffettivoStudenti; i++) {
printf ("%d: %s abitante in via %s n. %d - voto %d\n",
i+1 ,
myClass.elenco[i].nome,
myClass.elenco[i].indiriz.via,
myClass.elenco[i].indiriz.numCivico,
myClass.elenco[i].voto );
}
printf ("\n\nPREMI UN TASTO PER CONTINUARE");
inutile = getch(); break;
case '3':
myClass.numEffettivoStudenti = 0;
printf ("Ho svuotato l'array");
printf ("\n\nPREMI UN TASTO PER CONTINUARE");
inutile = getch(); break;
case '4': break;
// impossibile raggiungere questo caso se il
// filtro sull'input funziona
default: printf ("errore, qualcosa non va"); break;
} // fine switch
} while (carLetto != '4');
printf ("\naddio. buon proseguimento di lezione, amico!\n");
}
non mi è chiaro cosa faccia il soprastante codice qui
codice:
myClass.elenco[myClass.numEffettivoStudenti]=studLetto;
myClass.numEffettivoStudenti++;
Qui
codice:
myClass.numEffettivoStudenti = 0;
non ho ben capito come fa il codice a inserire i vari studenti nell'elengo, io avrei usato un for con indice i per l'inserimento, non capisco.