Merhabalar. Öncelikle iyi forumlar dilerim. Bugün yapmış olduğum programda anlamsız bir hata alıyorum. Çözümünü bilen yardımcı olabilir mi?
C++:
#include <iostream>
using namespace std;
int main()
{
char grade,
aCount=0,
bCount=0,
cCount=0;
bool cont=false;
int bar=-1;
cout<<"Enter the letter grades"<<endl
<<"Enter the EOF character to end input."<<endl;
while( (grade=cin.get()) != bar)
{
switch (grade) {
case 'A': case 'a':
++aCount;
break;
case'B':
case'b':
++bCount;
break;
case'C':
case'c':
++cCount;
break;
default:
cout<<"Incorrect letter grade entered."<<"\n\n\nEnter a new grade\n";
}
}
cout<<"\nTotals for each letter grade are:"
<<"A:"<<aCount
<<"B:"<<bCount
<<"C:"<<cCount<<endl;
}
Böyle bir switch-case yapısı görmedim ben daha önce. Dalga geçmek için demiyorum yanlış anlama belki ben daha önce görmemişimdir ama bana syntax hatalı gibi geldi.
Siz görmemişsiniz. Tipi biraz yamuk olsa da kullanım doğru. A harfi için olan kısım da B ve C harfi için olanla aynı olmalı o kadar.
char alıp -1 girmeye çalışıyorsun. Ama - ve 1 farklı karakterler. -1 ASCII'de ne bilmiyorum. Ama 0 aslında 48. Bu yüzden bar değişkenini 48 yapıp 0 girince programın sonlanmasını sağladım.
aCount, bCount ve cCount nedense int yerine char olarak tanımlanmış. Değiştirdim.
while içinde switch-case kullandığın için sanırım o break'ler while a etki ediyor. Bu yüzden scope tanımladım. Yine de aynı olayı yapmaya devam ediyor.
Olayı çözdüm. Sen girdi alırken bastığın enter'ı da alıyor. Buffer'da kaldığı için alıyor. Bu yüzden && != 'enter' ekledim. Bu durumda da while döngüsü bozuluyor. Ben sana yaptığım değişiklikleri atayım sen gerisini halledersin. Ama muhtemelen farklı bir yol kullanman gerekecek.
Kod:
#include <iostream>
using namespace std;
int main() {
char grade = 0;
int aCount = 0;
int bCount = 0;
int cCount = 0;
int bar = 48;
bool cont = false;
cout << "Enter the letter grades" << endl
<< "Enter the EOF character to end input." << endl;
while ((grade = cin.get()) != bar && grade != '\n') {
switch (grade) {
case 'A':
case 'a':
++aCount;
break;
case'B':
case'b':
++bCount;
break;
case'C':
case'c':
++cCount;
break;
default:
cout << "Incorrect letter grade entered." << "\n\n\nEnter a new grade\n";
}
}
cout << "\nTotals for each letter grade are: "
<< " A: " << aCount
<< " B: " << bCount
<< " C: " << cCount << endl;
return 0;
}
Bu arada konuya gelen cevaplarsa işe yarar tek şey şuydu. O da sadece doğru bilgi. Konuya bir yararı pek yok.