Il testo non è chiaro, sembra che tu possa inserire un numero illimitato di voti di italiano, matematica e inglese. In questo caso non serve fare alcuna distinzione, basta sommare i voti e dividere per il numero di voti inseriti all'interno di un ciclo while.
codice:
#include <iostream>#include <iomanip>
using namespace std;
int main ()
{
int n = 0;
double sum = 0;
int choise;
while(true) {
cout << "Programma di Pinco Pallino" << endl;
cout << " Media attuale: ";
if(n > 0) {
cout << fixed << setprecision(2) << sum/n;
}
else {
cout << "N/A";
}
cout << endl;
cout << "1) Inserisci voto di Italiano" << endl;
cout << "2) Inserisci voto di Matematica" << endl;
cout << "3) Inserisci voto di Informatica" << endl;
cout << "4) Esci" << endl;
cout << endl;
cin >> choise;
if(choise == 4) {
break;
}
else if(choise == 1 || choise == 2 || choise == 3) {
cout << "Inserisci il voto: ";
double voto;
cin >> voto;
while(voto < 0 || voto > 10) {
cout << "Il voto deve essere compreso fra 0 e 10, reinserisci: ";
cin >> voto;
}
sum += voto;
n++;
}
else {
cout << "Scelta non valida" << endl;
}
cout << endl;
}
return 0;
}
Se invece puoi inserire un solo voto per materia la cosa si complica un po'. Questa può essere una soluzione
codice:
#include <iostream>
#include <iomanip>
#define N 3
using namespace std;
int main ()
{
const char *materia[N] = {"Italiano", "Matematica", "Informatica"};
double voto[N];
bool flag[N];
for(int i = 0; i < N; i++) {
flag[i] = false;
}
int choise;
while(true) {
cout << "Programma di Pinco Pallino" << endl;
cout << " Media attuale: ";
int n = 0;
double sum = 0;
for(int i = 0; i < N; i++) {
if(flag[i]) {
sum += voto[i];
n++;
}
}
if(n > 0) {
cout << fixed << setprecision(2) << sum/n;
}
else {
cout << "N/A";
}
cout << endl;
for(int i = 0; i < N; i++) {
cout << i+1 << ") Inserisci il voto di " << materia[i] << endl;
}
cout << N+1 << ") Esci" << endl;
cout << endl;
cin >> choise;
if(choise == N+1) {
break;
}
else if(choise >= 1 && choise <= N) {
cout << "Inserisci il voto: ";
cin >> voto[choise-1];
while(voto[choise-1] < 0 || voto[choise-1] > 10) {
cout << "Il voto deve essere compreso fra 0 e 10, reinserisci: ";
cin >> voto[choise-1];
}
flag[choise-1] = true;
}
else {
cout << "Scelta errata" << endl;
}
cout << endl;
}
return 0;
}
Se non comprendi qualcosa chiedi pure, ma prima di questo chiedi al tuo professore cosa vuole che facciate. Chiedegli anche degli use cases.