Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Buongiorno atutti sto cercando di imparare C++ da un manuale, devo ammettere che è piuttosto vecchio, e studiando ho trovato un codice che però non gira correttamente il codice trovato nel libro è il seguente:
Codice sorgente - presumibilmente C++
#include <iostream>
usingnamespace std;
int main()
{
int grade;
int aCount=0,
bCount=0,
cCount=0,
dCount=0,
fCount=0;
cout<<"Enter the letter grades."<<endl
<<"Enter the EOF character to end input."<<endl;
while((grade=cin.get())!=EOF){
switch(grade){
case'A':
case'a':
++aCount;
cout<<aCount<<endl;
break;
case'B':
case'b':
++bCount;
break;
case'C':
case'c':
++cCount;
break;
case'D':
case'd':
++dCount;
break;
case'F':
case'f':
++fCount;
break;
default:
cout<<"Incorrect letter grade entered."
<<"Enter a new grade."<<endl;
break;
}
}
cout<<"\n\nTotals for each letter grade are:"
<<"\nA: "<<aCount
<<"\nB: "<<bCount
<<"\nC: "<<cCount
<<"\nD: "<<dCount
<<"\nF: "<<fCount<<endl;
return0;
}
con questo codice il valore di grade nello switch non viene memorizzzato correttamente sapete dirmi qual'è il problema e come risolverlo? ho modificato il codice come segue:
Codice sorgente - presumibilmente C++
#include <iostream>
#include <stdio.h>
usingnamespace std;
int main()
{
int grade;
char prova;
int aCount=0,
bCount=0,
cCount=0,
dCount=0,
fCount=0;
cout<<"Enter the letter grades."<<endl
<<"Enter the EOF character to end input."<<endl;
grade=cin.get();
while((grade=cin.get())!=EOF){
switch(grade=cin.get()){
case'A':
case'a':
++aCount;
cout<<aCount<<endl;
break;
case'B':
case'b':
++bCount;
break;
case'C':
case'c':
++cCount;
break;
case'D':
case'd':
++dCount;
break;
case'F':
case'f':
++fCount;
break;
default:
cout<<"Incorrect letter grade entered."
<<"Enter a new grade."<<endl;
break;
}
}
cout<<"\n\nTotals for each letter grade are:"
<<"\nA: "<<aCount
<<"\nB: "<<bCount
<<"\nC: "<<cCount
<<"\nD: "<<dCount
<<"\nF: "<<fCount<<endl;
return0;
}
e funziona parzialmente poichè il primo input non viene memorizzato nei count potete dirmi dove si trova il problema in tutte e due i codici?Grazie
il codice che hai trovato sul libro è giusto, il problema è EOF che non viene riconosciuto. Io utilizzerei il tasto INVIO per fermare la lettura.
Quindi:
Codice sorgente - presumibilmente C++
#include <iostream>
#include <stdio.h>
usingnamespace std;
int main()
{
constint ENTER =10;
int grade;
char prova;
int aCount=0,
bCount=0,
cCount=0,
dCount=0,
fCount=0;
cout<<"Enter the letter grades."<<endl
<<"Enter the EOF character to end input."<<endl;
while((grade=cin.get())!= ENTER)/* esco quando trovo il carattere di INVIO*/
{
switch(grade)
{
case'A':
case'a':
++aCount;
cout<<aCount<<endl;
break;
case'B':
case'b':
++bCount;
break;
case'C':
case'c':
++cCount;
break;
case'D':
case'd':
++dCount;
break;
case'F':
case'f':
++fCount;
break;
default:
cout<<"Incorrect letter grade entered."
<<"Enter a new grade."<<endl;
break;
}
}
cout<<"\n\nTotals for each letter grade are:"
<<"\nA: "<<aCount
<<"\nB: "<<bCount
<<"\nC: "<<cCount
<<"\nD: "<<dCount
<<"\nF: "<<fCount<<endl;
return0;
}
il carattere INVIO diventa il tuo EOF.
Ultima modifica effettuata da Overflow il 03/04/2010 alle 14:04