Salve, sapreste dirmi perchè inserendo la Z maiuscola come char di chiusura in questo codice: va tutto bene.
// ESERCIZIO 4.30: Sostituzione di SWITCH con IF...ELSE.
//
// Usare l'istruzione switch per contare il numero di volte che ogni singolo voto a lettera ( A,B,C,D o F ) è stato ottenuo dagli studenti in un esame.
#include <stdio.h>
int main( void )
{
puts( "Inserire, per piacere, i voti a lettera degli studenti; verrà restituito il riepilogo dei risultati (Z per terminare).\n" );
// Per il riepilogo dei risultati, definiamo le variabili contatore per A,B,C,D,F.
unsigned int aCount = 0;
unsigned int bCount = 0;
unsigned int cCount = 0;
unsigned int dCount = 0;
unsigned int fCount = 0;
// Definiamo la variabile grade che sarà di tipo getchar() in modo da poter catturare il carattere inserito.
unsigned int grade;
// Definiamo il ciclo while per il sottociclo switch.
while ( ( grade = getchar() ) != 'Z' ) {
if ( grade == 'A' || grade == 'a' ) {
++aCount;
} else {
if ( grade == 'B' || grade == 'b') {
++bCount;
} else {
if ( grade == 'C' || grade == 'c') {
++cCount;
} else {
if ( grade == 'D' || grade == 'd') {
++dCount;
} else {
if ( grade == 'F' || grade == 'f') {
++fCount;
} else {
if ( grade == '\n' || grade == '\t' || grade == ' ' ) {
;
} else {
if ( grade != 'Z' ) {
puts( "Hai inserito un voto non corretto. Inserisci un voto corretto ( A,B,C,D,F ) (Z per terminare)" );
} else {
;
}
}
}
}
}
}
}
}
// Riepilogo dei risultati.
puts( "\nRiepilogo dei risultati:\n" );
printf( "A:\t\t%u\nB:\t\t%u\nC:\t\t%u\nD:\t\t%u\nF:\t\t%u\n", aCount, bCount, cCount, dCount, fCount );
}
// || ( grade = getchar() ) != 'z'
// || grade != 'z'
In questo codice avrei voluto immettere come condizione di chiusura while ( ( grade = getchar() ) != 'Z' || ( grade = getchar() ) != 'z) {etc..]
e
if ( grade != 'Z' || grade != 'z' ) {etc]
ma non va... volevo cioè far chiudere il ciclo sia con la Z maiuscola che con la z minuscola.
Grazie. Ciao.