Ledmauro
13-01-2007, 20:23
Ciao ragazzi, ho da poco incominciato con il C, comprandomi il libro "C corso completo di programmazione" (un gran bel libro a dire la verità )
Sono appena arrivato agli switch. Il libro fa un esempio di un semplice programma, ovvero: conta le lettere dei voti, per farvi capire meglio ecco il codice:
#include <stdio.h>
int main()
{
int grade;
int aCount = 0;
int bCount = 0;
int cCount = 0;
printf("Inserisci i gradi delle lettere. \n");
printf("Inserisci il carattere EOF per terminare. \n");
while ( (grade = getchar() ) != EOF) {
switch (grade) {
case 'A':
case 'a':
++aCount;
break;
case 'B':
case 'b':
++bCount;
break;
case 'C':
case 'c':
++cCount;
break;
case '\n':
case '\t':
case ' ' :
break;
default:
printf("Non hai inserito correttamente i gradi delle lettere. \n");
printf("Inserisci nuovi gradi. ");
break;
}
}
printf("\nTotale per ogni gradi delle lettere sono : \n");
printf("'A:' %d\n", aCount);
printf("'B:' %d\n", bCount);
printf("'C:' %d\n", cCount);
return 0;
}
Ho qualche perplessità su alcune cosa, ovvero:
1)Il libro parla quando vi è "while ( (grade = getchat() != EOF) {", che effettua una conversione da carattere ad intero, ma in poche parole che cosa fa?
Non si potrebbe fare in questo modo:
while (grade == 0101) {
Ovvero, fino a quando non si inserisce 0101 continua con lo switch? Perchè mi dovrei complicare la vita xD?
2)A quanto ho capito, lo switch permette di eseguire varie scelte. Ma che differenza c'è con l'IF?Non potrei mettere per esempio:
if (grade == a||A) { \*dove || se non sbaglio dovrebbe stare per OR*\
acount+=1;
}
Non è uguale?
Grazie anticipamente e scusate per le svariate domande, ma voglio capire quello che sto facendo, e non fare copia e incolla dal libro e pensando di sapere il C xD.
Ciao!
Sono appena arrivato agli switch. Il libro fa un esempio di un semplice programma, ovvero: conta le lettere dei voti, per farvi capire meglio ecco il codice:
#include <stdio.h>
int main()
{
int grade;
int aCount = 0;
int bCount = 0;
int cCount = 0;
printf("Inserisci i gradi delle lettere. \n");
printf("Inserisci il carattere EOF per terminare. \n");
while ( (grade = getchar() ) != EOF) {
switch (grade) {
case 'A':
case 'a':
++aCount;
break;
case 'B':
case 'b':
++bCount;
break;
case 'C':
case 'c':
++cCount;
break;
case '\n':
case '\t':
case ' ' :
break;
default:
printf("Non hai inserito correttamente i gradi delle lettere. \n");
printf("Inserisci nuovi gradi. ");
break;
}
}
printf("\nTotale per ogni gradi delle lettere sono : \n");
printf("'A:' %d\n", aCount);
printf("'B:' %d\n", bCount);
printf("'C:' %d\n", cCount);
return 0;
}
Ho qualche perplessità su alcune cosa, ovvero:
1)Il libro parla quando vi è "while ( (grade = getchat() != EOF) {", che effettua una conversione da carattere ad intero, ma in poche parole che cosa fa?
Non si potrebbe fare in questo modo:
while (grade == 0101) {
Ovvero, fino a quando non si inserisce 0101 continua con lo switch? Perchè mi dovrei complicare la vita xD?
2)A quanto ho capito, lo switch permette di eseguire varie scelte. Ma che differenza c'è con l'IF?Non potrei mettere per esempio:
if (grade == a||A) { \*dove || se non sbaglio dovrebbe stare per OR*\
acount+=1;
}
Non è uguale?
Grazie anticipamente e scusate per le svariate domande, ma voglio capire quello che sto facendo, e non fare copia e incolla dal libro e pensando di sapere il C xD.
Ciao!