School-Coding-Cpp/struct/ticoprof_struct_5.cpp

84 lines
4.8 KiB
C++

/*
AUTORE: Manuel Vichi
(WIP) ticoprof struct 5
*/
#include <iostream>
#include <ctime>
#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;
}