Gestione di una Scuola con Struct in C++
Vogliamo rappresentare la struttura di una scuola composta da diverse classi. Ogni classe è identificata da:
- una sezione (es. 1A, 2B, 3C...);
- un numero di alunni iscritti;
- il nome dell’insegnante principale.
Si desidera creare un programma in C++ che permetta di:
- Memorizzare i dati di più classi;
- Visualizzare l’elenco delle classi con i relativi dati;
- Determinare quale classe ha il numero maggiore di alunni.
Modellazione del problema
Ogni classe scolastica è rappresentata da una struct:
struct Classe {
string sezione; // es. "1A", "2B" ...
int numeroAlunni; // numero di studenti
string insegnante; // nome dell insegnante principale
};
La scuola, invece, può essere rappresentata come un array di struct, dove ogni elemento è una classe:
Classe scuola[5]; // 5 classi della scuola
Codice completo in C++
#include <iostream>
#include <iomanip>
#include <string>
using namespace std;
struct Classe {
string sezione;
int numeroAlunni;
string insegnante;
};
int main() {
const int N = 5; // numero di classi
Classe scuola[N];
int maxAlunni = 0;
string sezioneMax;
cout << "=== Gestione Scuola ===\n";
// Inserimento dati
for (int i = 0; i < N; i++) {
cout << "\nInserisci sezione della classe " << i+1 << ": ";
cin >> scuola[i].sezione;
cout << "Inserisci numero di alunni: ";
cin >> scuola[i].numeroAlunni;
cout << "Inserisci nome dell insegnante principale: ";
cin.ignore();
getline(cin, scuola[i].insegnante);
if (scuola[i].numeroAlunni > maxAlunni) {
maxAlunni = scuola[i].numeroAlunni;
sezioneMax = scuola[i].sezione;
}
}
// Visualizzazione dati
cout << "\n\n--- Elenco Classi ---\n";
cout << left << setw(10) << "Sezione"
<< setw(15) << "Alunni"
<< "Insegnante" << endl;
for (int i = 0; i < N; i++) {
cout << left << setw(10) << scuola[i].sezione
<< setw(15) << scuola[i].numeroAlunni
<< scuola[i].insegnante << endl;
}
cout << "\nClasse con più alunni: " << sezioneMax
<< " (" << maxAlunni << " alunni)\n";
return 0;
}
Spiegazione del programma
- La struct
Classerappresenta una singola classe scolastica. - L array
scuolacontiene 5 elementi, cioè 5 classi diverse. - I dati vengono inseriti tramite tastiera.
- Un ciclo stampa tutte le informazioni in modo tabellare.
- Durante l inserimento, il programma verifica quale classe ha il numero maggiore di alunni.
Esempio di esecuzione
=== Gestione Scuola ===
Inserisci sezione della classe 1: 1A
Inserisci numero di alunni: 22
Inserisci nome dell insegnante principale: Rossi
Inserisci sezione della classe 2: 2B
Inserisci numero di alunni: 25
Inserisci nome dell insegnante principale: Bianchi
...
--- Elenco Classi ---
Sezione Alunni Insegnante
1A 22 Rossi
2B 25 Bianchi
3C 18 Verdi
4A 20 Neri
5B 24 Gialli
Classe con più alunni: 2B (25 alunni)
Estensioni possibili
- Calcolare il numero totale di alunni della scuola.
- Permettere la ricerca di una classe per sezione.
- Gestire dinamicamente l inserimento di un numero variabile di classi.
- Associare a ogni classe un elenco di materie o voti medi.
Questo esercizio mostra come una struct permetta di modellare ogni classe come un oggetto indipendente, mentre l’array di struct rappresenta l’intera scuola.