#include #include int yesno( const char *msg ) { char c; printf( "%s (s/n)? ", msg ); do { scanf( " %c", &c ); c = toupper( c ); if ( c != 'S' && c != 'N' ) printf( "Per favore, non tergiversare: inserisci s o n\n" ); } while ( c != 'S' && c != 'N' ); return c == 'S'; } double number( const char *msg ) { double d; printf( "%s? ", msg ); while ( scanf( "%lf", &d ) < 1 ) printf( "Per favore: inserisci un valore numerico\n" ); return d; } int main() { int part1, part2; double v1, v2; part1 = yesno( "Hai sostenuto il primo compitino" ); if ( !part1 ) { printf( "Non puoi sostenere l'esame a febbraio; il primo appello utile per te sarà aprile 2008\n" ); return 0; } v1 = number( "Con quale votazione" ); if ( v1 < 15 ) printf( "Se vuoi, puoi sostenere lo scritto di recupero di febbraio; se lo superi, avrai diritto a partecipare alla prova di laboratorio\n" ); else { part2 = yesno( "Hai sostenuto il secondo compitino" ); if ( !part2 ) { printf( "Non puoi sostenere l'esame a febbraio; il primo appello utile per te sarà aprile 2008\n" ); return 0; } v2 = number( "Con quale votazione" ); if ( v1 + v2 < 18 * 2 ) printf( "Se vuoi, puoi sostenere lo scritto di recupero di febbraio; se lo superi, avrai diritto a partecipare alla prova di laboratorio\n" ); else printf( "Hai diritto a partecipare alla prova di laboratorio per l'appello di febbraio; la tua media di ammissione è %.2lf\n", ( v1 + v2 ) / 2 ); } printf( "Se supererai la prova di laboratorio con votazione sufficiente, potrai verbalizzare la media dei voti ottenuti\n" ); printf( "arrotondata all'intero più vicino\n" ); return 0; }