Salve,
stavo facendo un esercizio e la prima parte del codice è piuttosto semplice eccola:
#include <cstdlib>
#include <iostream>
#include <math.h>
using namespace std;
/*
 * 
 */
int main(int argc, char** argv) {
    cout << "Inserire i voti, separati da spazi e terminanti con zero:" << endl;
    const int MIN = 18, MAX = 33;
    const double FATTORE = 100;
    int min = 33, max = 18, voto, quanti = 0;
    double media = 0;
    
    do {
        cin >> voto;
        if (voto == 0)
            break;
        
        if (voto < min)
            min = voto;
        
        if (voto > max)
            max = voto;
        
        media = media + voto;
        quanti = quanti + 1;
    } while (voto != 0);
    
    media = media / quanti;
    cout << "voto minimo:\t" << min << endl
            << "voto massimo:\t" << max << endl
            << "voto medio:\t" << (int) (media * FATTORE + 0.5) / FATTORE;
però non ho capito come funziona la parte dello switch che ho spudoratamente copiato
 switch ((int) ((media - MIN) / (MAX - MIN)*5)) {
            case 0: cout << "\t(sufficiente)";
            break;
        case 1: cout << "\t(discreto)";
            break;
        case 2: cout << "\t(buono)";
            break;
        case 3: cout << "\t(distinto)";
            break;
        case 4: cout << "\t(ottimo)";
            break;
        default: cout << "\t(eccellente)";
    }
    cout << endl;
    return 0;
}
come fa a sapere quando è un caso o quando è un altro?? in altri esercizi ho un listato dove mi identifico con i casi ad esempio i mesi che hanno 31 giorni... basta scrivere:
codice non dell'esercizio
switch(mesi){
case 1: case 3: case 5: ..........
          cout << quello ke vuoi;
          break;
...........
}
ma nel codice sopra non riesco a capire da dove prende la divisione per capire se è sufficiente, buono o altro...
grazie