diff --git a/struct/ticoprof_struct_5.cpp b/struct/ticoprof_struct_5.cpp new file mode 100644 index 0000000..f80383e --- /dev/null +++ b/struct/ticoprof_struct_5.cpp @@ -0,0 +1,83 @@ +/* +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; +}