Sei sulla pagina 1di 6

#include <iostream>

#include <cstring>
#define MAX_VOTI 200
using namespace std;
struct esame {
char matricola [10];
char nome [50];
char cognome [70];
int risultato;
bool lode;
char fascia_voto;
};
void stampa_tutto (struct esame voti [], int riemp);
void inserisci_matricola (struct esame voti [], int &riemp);
int main() {
struct esame voti [MAX_VOTI] {
{"N46001234", "Pinco", "Pallino", 26, false, 'B'},
{"N46001235", "Paolino", "Paperino", 30, false, 'A'},
{"N39001236", "John", "Doe", 30, true, 'A'},
{"P46001234", "Jane", "Doe", 28, false, 'A'},
{"N39001234", "Mario", "Rossi", 16, false, 'E'},
};
int riemp = 5;
char mat_utente [10];
bool esito;
do {
cout << "Inserisci il numero di matricola" << endl;
cin >> mat_utente;
if ((mat_utente[0] == 'N' && mat_utente[1] == 4 && mat_utente[2] == 6) ||
(mat_utente[0] == 'P' && mat_utente[1] == 4 && mat_utente[2] == 6) ||
(mat_utente[0] == 'N' && mat_utente[1] == 3 && mat_utente[2]== 9 ))
{
esito = true;
stampa_tutto (voti, riemp);
inserisci_matricola (voti, riemp);
}
else {
esito = false;
}
}
while (esito == true);
return 0;
}

void stampa_tutto (struct esame voti [], int riemp){


int somma_A = 0;
int somma_B = 0;
int somma_C = 0;
int somma_D = 0;
int cont_A = 0;
int cont_B = 0;
int cont_C = 0;
int cont_D = 0;
for (int i=0; i<riemp; i++) {
cout << "Matricola: " << voti[i].matricola << " - Nome: " << voti[i].nome << " - Cognome: " <<
voti[i].cognome;
cout << " - Risultato esame: " << voti[i].risultato;
if (voti[i].lode == true){
cout << " e lode";
}
cout << " - Fascia voto: " << voti[i].fascia_voto << endl;
if (voti[i].fascia_voto == 'A'){
somma_A = somma_A + voti[i].risultato;
cont_A++;
}
if (voti[i].fascia_voto == 'B'){
somma_B = somma_B + voti[i].risultato;
cont_B++;
}
if (voti[i].fascia_voto =='C'){
somma_C = somma_C + voti[i].risultato;
cont_C++;
}
if (voti[i].fascia_voto =='D'){
somma_D = somma_D + voti[i].risultato;
cont_D++;
}
}
float media_A = (float)somma_A / (float)cont_A;
cout << "La media numerica dei risultati associati alla fascia A è " << media_A << endl;
float media_B = (float)somma_B / (float)cont_B;
cout << "La media numerica dei risultati associati alla fascia B è " << media_B << endl;
float media_C = (float)somma_C / (float)cont_C;
cout << "La media numerica dei risultati associati alla fascia C è " << media_C << endl;
float media_D = (float)somma_D / (float)cont_D;
cout << "La media numerica dei risultati associati alla fascia D è " << media_D << endl;

float frequenza_A = (float)cont_A / (float)riemp;


float frequenza_B = (float)cont_B / (float)riemp;
float frequenza_C = (float)cont_C / (float)riemp;
float frequenza_D = (float)cont_D / (float)riemp;

if (frequenza_A > frequenza_B && frequenza_A > frequenza_C && frequenza_A > frequenza_D)
{
cout << "La fascia di voto più frequente è la A (" << frequenza_A << ")" << endl;
}
else if (frequenza_B > frequenza_A && frequenza_B > frequenza_C && frequenza_B >
frequenza_D){
cout << "La fascia di voto più frequente è la B (" << frequenza_B << ")" << endl;
}
else if (frequenza_C > frequenza_A && frequenza_C > frequenza_B && frequenza_C >
frequenza_D){
cout << "La fascia di voto più frequente è la C (" << frequenza_C << ")" << endl;
}
else if (frequenza_D > frequenza_A && frequenza_D > frequenza_B && frequenza_D >
frequenza_C){
cout << "La fascia di voto più frequente è la D (" << frequenza_D << ")" << endl;
}
}

void inserisci_matricola (struct esame voti [], int &riemp){


char mat_inserisci [10];
cout << "Inserisci il numero di matricola" << endl;
cin >> mat_inserisci;
for (int i=0; i<riemp; i++){
if (strcmp (voti[i].matricola, mat_inserisci)==0){
cout << "Matricola: " << voti[i].matricola << " - Nome: " << voti[i].nome << " - Cognome: "
<< voti[i].cognome;
cout << " - Risultato esame: " << voti[i].risultato;
if (voti[i].lode == true){
cout << " e lode";
}
cout << " - Fascia voto: " << voti[i].fascia_voto << endl;
}
}
char nome_inserisci [50];
char cog_inserisci[70];
int ris_inserisci;
bool lode_inserisci;
cout << "Matricola non presente, inserisci i dati relativi a un nuovo studente" << endl;
cout << "Inserisci una nuova matricola" << endl;
cin >> mat_inserisci;
strcpy(mat_inserisci, voti[riemp].matricola);
cout << "Inserisci il nome del nuovo studente" << endl;
cin >> nome_inserisci;
strcpy(nome_inserisci, voti[riemp].nome);
do {
cout << "Inserisci il risultato dell'esame di Fondamenti d'Informatica" << endl;
cin >> ris_inserisci;
if (ris_inserisci < 0 && ris_inserisci > 30){
cout << "Inserimento del risultato non valido!" << endl;
}
}
while (ris_inserisci < 0 && ris_inserisci > 30);
do {
cout << "Inserisci 1 se lo studente ha ottenuto anche la lode, altrimenti 0" << endl;
cin >> lode_inserisci;
if (ris_inserisci != 30){
cout << "Inserimento non valido, lo studente può ottenere la lode solo se il risultato è pari a 30"
<< endl;
}
}
while (ris_inserisci == 30);
if (ris_inserisci <= 30 && ris_inserisci > 26) {
voti[riemp].fascia_voto == 'A';
}
else if (ris_inserisci <= 26 && ris_inserisci >= 24) {
voti[riemp].fascia_voto == 'B';
}
else if (ris_inserisci <= 23 && ris_inserisci >= 21) {
voti[riemp].fascia_voto == 'C';
}
else if (ris_inserisci <= 20 && ris_inserisci >= 18) {
voti[riemp].fascia_voto == 'D';
}
else if (ris_inserisci < 18) {
voti[riemp].fascia_voto == 'E';
}
riemp++;
stampa_tutto (voti, riemp);
}

Potrebbero piacerti anche