/* AUTORE: Manuel Vichi (WIP) ticoprof struct 5 */ #include #include #define SIZE 5 using namespace std; typedef struct { char lettera; int numero; } LivelloLinguistico; typedef struct { int anno; char sezione; } Classe; typedef struct { int codiceStudente; Classe classe; LivelloLinguistico livelloLinguistico; } Studente; void generaStudenti(Studente studenti[], size_t size) { srand(time(NULL)); // Inizializza il generatore casuale for (size_t i = 0; i < size; i++) { studenti[i].codiceStudente = (rand() % 99999) + 10000; studenti[i].classe.anno = rand() % 6 + 1; studenti[i].classe.sezione = 'A' + rand() % 26; studenti[i].livelloLinguistico.lettera = 'A' + rand() % 3; studenti[i].classe.anno = rand() % 2 + 1; } } void stampaStudenti(const Studente studenti[], size_t size) { for (size_t i = 0; i < size; i++) { cout << "Studente #" << studenti[i].codiceStudente << " : Classe " << studenti[i].classe.anno << studenti[i].classe.sezione << ", Livello Linguistico: " << studenti[i].livelloLinguistico.lettera << studenti[i].classe.anno << endl; } } void confrontaStudente(const Studente studente[], size_t size) { for (size_t i = 0; i < size; i++) { for (size_t j = i + 1; j < size; j++) { if (studente[i].classe.anno < studente[j].classe.anno) { if (studente[i].livelloLinguistico.lettera == studente[j].livelloLinguistico.lettera) { if (studente[i].livelloLinguistico.numero < studente[j].livelloLinguistico.numero) { cout << "Lo studente #" << studente[i].codiceStudente << " ha un livello linguistico maggiore dello studente #" << studente[j].codiceStudente << " nonostante frequenti una classe inferiore." << endl; cout << "Studente #" << studente[i].codiceStudente << " : Classe " << studente[i].classe.anno << studente[i].classe.sezione << ", Livello Linguistico: " << studente[i].livelloLinguistico.lettera << studente[i].classe.anno << endl; cout << "Studente #" << studente[j].codiceStudente << " : Classe " << studente[j].classe.anno << studente[j].classe.sezione << ", Livello Linguistico: " << studente[j].livelloLinguistico.lettera << studente[j].classe.anno << endl; } } else if (studente[i].livelloLinguistico.lettera > studente[j].livelloLinguistico.lettera) { cout << "Lo studente #" << studente[i].codiceStudente << " ha un livello linguistico maggiore dello studente #" << studente[j].codiceStudente << " nonostante frequenti una classe inferiore." << endl; cout << "Studente #" << studente[i].codiceStudente << " : Classe " << studente[i].classe.anno << studente[i].classe.sezione << ", Livello Linguistico: " << studente[i].livelloLinguistico.lettera << studente[i].classe.anno << endl; cout << "Studente #" << studente[j].codiceStudente << " : Classe " << studente[j].classe.anno << studente[j].classe.sezione << ", Livello Linguistico: " << studente[j].livelloLinguistico.lettera << studente[j].classe.anno << endl; } } else if (studente[i].classe.anno > studente[j].classe.anno) { if (studente[j].livelloLinguistico.lettera == studente[i].livelloLinguistico.lettera) { if (studente[j].livelloLinguistico.numero < studente[i].livelloLinguistico.numero) { cout << "Lo studente #" << studente[j].codiceStudente << " ha un livello linguistico maggiore dello studente #" << studente[i].codiceStudente << " nonostante frequenti una classe inferiore." << endl; cout << "Studente #" << studente[i].codiceStudente << " : Classe " << studente[i].classe.anno << studente[i].classe.sezione << ", Livello Linguistico: " << studente[i].livelloLinguistico.lettera << studente[i].classe.anno << endl; cout << "Studente #" << studente[j].codiceStudente << " : Classe " << studente[j].classe.anno << studente[j].classe.sezione << ", Livello Linguistico: " << studente[j].livelloLinguistico.lettera << studente[j].classe.anno << endl; } } else if (studente[j].livelloLinguistico.lettera > studente[i].livelloLinguistico.lettera) { cout << "Lo studente #" << studente[j].codiceStudente << " ha un livello linguistico maggiore dello studente #" << studente[i].codiceStudente << " nonostante frequenti una classe inferiore." << endl; cout << "Studente #" << studente[i].codiceStudente << " : Classe " << studente[i].classe.anno << studente[i].classe.sezione << ", Livello Linguistico: " << studente[i].livelloLinguistico.lettera << studente[i].classe.anno << endl; cout << "Studente #" << studente[j].codiceStudente << " : Classe " << studente[j].classe.anno << studente[j].classe.sezione << ", Livello Linguistico: " << studente[j].livelloLinguistico.lettera << studente[j].classe.anno << endl; } } } } } int main(void) { Studente studenti[SIZE]; generaStudenti(studenti,SIZE); // stampaStudenti(studenti,SIZE); confrontaStudente(studenti,SIZE); return 0; }