Concetti:
Costrutti struct
e typedef
(esempio illustrativo di utilizzo)
Testo:
Realizzare un programma che:
stud_t
basato su una struttura per la memorizzazione dei dati relativi ad uno studente.matricola
per memorizzare la matricola dello studentenome
per la memorizzazione del nome dello studente (lungo al massimo 20 caratteri)media
per la memorizzazione della media dei voti dello studentevoti
per la memorizzazione dei voti relativi agli esami sostenuti dallo studentestud_t
finalizzato a memorizzare i dati relativi a N_STUD
studenti0
nel vettore di tipo stud_t
Soluzione:
/* Esempio illustrativo del costrutti struct e typedef. Il programma dovra': - Definire un nuovo tipo stud_t basato su una struttura per la memorizzazione dei dati relativi ad uno studente. - La struttura dovra' contenere: - Un campo matricola per memorizzare la matricola dello studente - Un campo nome per la memorizzazione del nome dello studente (lungo al massimo 20 caratteri) - Un campo media per la memorizzazione della media dei voti dello studente - Un vettore di voti per la memorizzazione dei voti relativi agli esami sostenuti dallo studente - Il programma, dopo aver dichiarato un vettore di stud_t atto a memorizzare i dati di N_STUD studenti - Dovra' popolare tutti i campi relativi allo studente con indice 0 del vettore di tipo stud_t - Dovra' infine stampare tutti i campi relativi a tale studente */ #include <stdio.h> #include <string.h> #define DIM_NOME 20 #define N_VOTI 3 #define N_STUD 10 /* Definizione del nuovo tipo stud_t */ typedef struct { int matricola; char nome[DIM_NOME+1]; float media; int voti[N_VOTI]; } stud_t; int main(){ /* Dichiarazione del vettore di stud_t */ stud_t studente[N_STUD]; int i; /* Riempimento dei campi della struttura riferiti allo studente con indice 0 */ strcpy(studente[0].nome, "stefano"); studente[0].matricola = 13123; studente[0].media = 23.0; studente[0].voti[0] = 18; studente[0].voti[1] = 27; studente[0].voti[2] = 24; /* Stampa dei valori precedentemente inseriti */ printf("%d %s %f\n", studente[0].matricola, studente[0].nome, studente[0].media); for(i=0; i<N_VOTI-1; i++) printf("%d ", studente[0].voti[i]); printf("%d\n", studente[0].voti[N_VOTI-1]); return 0; }