Strutture in C - II

Analizza il seguente codice:

struct studente {
	char nome[20];
	char cognome[20];
	int annoNascita;
	int voti[20]; // Contiene i voti dello studente
	int numVoti; // Contiene quanti voti sono stati inseriti per lo studente
	
	studente() { // costruttore vuoto invocato con studente s1;
	    // strcpy(nome, "fabio");
	    annoNascita=1990;
	    numVoti=0; // Imposta il numero di voti iniziali a zero
	}
	studente(const studente &s) { // costruttore invocato con studente s2(s1) 
	    annoNascita = s.annoNascita; // copio l'anno di nascita
	}	
}; 

int main() {
      studente s; // Dichiarare una variabile
      cout << s.numVoti; // Stampa zero perché lo imposta il costruttore
      studente s2(s);
      cout << s2.annoNascita; // Stampa l'anno di nascita che è uguale a quello di s1
}

Il costruttore di una struct è una funzione speciale che viene richiamata quando la struct viene dichiarata nel codice struct studente s;.
La struttura s appena dichiarata ha il numero di voti uguale a zero. Se non ci fosse il costruttore la variabile intera numVoti conterrebbe un numero casuale e dovremmo azzerarla poi, visto che se creo un nuovo studente mi immagino che non abbia ancora voti inseriti.

Il costruttore studente(const studente & s) in più riceve in ingresso un parametro di tipo struttura studente e quindi consente di inizializzare i valori della struttura nuova in base a quelli della struttura passata.

Attività

  1. Fate inserire dall'utente i dati anagrafici dello studente s1 (nome, cognome e anno)
  2. Fate inserire dall'utente i dati anagrafici dello studente s2
  3. Dire se lo studente s1 è più vecchio dello studente s2
  4. Dire se lo studente s1 ha un cognome più lungo dello studente s2 (strlen)
  5. Dire quanti byte occupa la struct studente (operatore sizeof)
  6. Inserisci 5 voti nello studente s1
  7. Stampa tutti i voti dello studente s1
  8. Stampa la media dei voti dello studente s1
  9. Crea una funzione a cui passare lo studente che stampa tutti i dati dello studente
  10. Modifica il costruttore studente() che per inserire dei valori a tua scelta e poi stampa i dati dello studente
  11. Modifica il costruttore studente(const studente & s) in modo che quando si crea una nuova struttura con studente s2(s1) vengano copiati tutti gli elementi della struttura precedente e dopo avere dichiarato una struttura s3 copiata dalla s1, stampane i valori con la funzione precedente.

Quindi carica su moodle un il programma realizzato.

Maggiori informazioni su cplusplus

Buon lavoro!