Stavo eseguendo un esercizio per impratichirmi sulla risoluzione di un problema con i costrutti if else.
il testo dell'esercizio recitava :
Scrivere un programma in grado di eseguire ripetutamente la conversione di un voto numerico tra 0 e 10 in un giudizio, secondo il seguente schema:
voto minore di 5 = giudizio insufficiente
voto maggiore di 5 e minore o uguale a 6.5 = giudizio sufficiente
voto maggiore di 6.5 e minore o uguale a 7.5 = giudizio buono
voto maggiore di 7.5 = giudizio ottimo
L’input deve essere un numero reale tra 0 e 10, oppure un numero negativo per indicare l'uscita dal programma. L’output una stringa di caratteri con il giudizio, oppure un messaggio di errore.
- - - - - - - - - - - - - -- -- - -- - - - - - - - - - -- - - - - - - - -- - - - - - - - -
mi sono fatto un programmino con una cascata di if else . tutto bene tranne che appena do dei valori che devono
restituire "buono" o "ottimo" , mi compare sempre il messaggio sufficiente. gli altri casi invece funzionano.
riporto il codice da me scritto.
#include <iostream>
#include <limits>
///#include <cstdint>
#include <string>
#include <sstream>
using namespace std;
int main ()
{
float voto = 0;
cout << "prego inserire il voto: ";
cin >> voto;
cout<< "il voto da voi espresso e': " << voto << endl;
if (voto <0 || voto>10)
{
cout<< "error\n";
}
else if (voto==0 || voto< 5)
{
cout<< "insufficiente\n";
}
else if (voto > 5 || voto<= 6.5)
{
cout << "sufficiente\n";
}
else if (voto >6.5 || voto== 7)
{
cout << "buono\n";
}
else if (voto >= 7.5 || voto <= 10)
{
cout << "ottimo\n";
}
return 0;
}
rispetto al testo dell'esecizio al numero negativo ho fatto corrispondere il messaggio di errore