Yasir Aykac
Picopat
- Katılım
- 7 Temmuz 2020
- Mesajlar
- 21
#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;
}
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.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.
#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 şekilde çözebilirsin. Tercih edeceğin bir yöntem olur mu bilmem.Switch-case'in böyle bir kullanımı var.
#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) {
if (grade == '\n')
continue;
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;
}
case'C':
++cCount;
break;
case'c':
++cCount;
break;
Switch-case'in böyle bir kullanımı var.Eğer iki tane case değerinin aynı işlemi yapmasını istiyorsan, ya iki case değerine de aynı işlemi yaptırırsın:
Bu kodda 1 tane döngü var switch() bir döngü değil. Ama C++ bilmediğim için oradaki break; komutu while döngüsünü kırar mı bilmiyorum. Onun yerine;"break" komutu seni döngüden çıkartıyor ama iki döngü var. Burada while'a gerek yok, istemediğin değerleri default case'inde gösterebilirsin.
Switch-case'in böyle bir kullanımı var.
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; 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; }
kodBitti = false;
while (kodBitti == true) {
...
case 'c':
kodBitti = false;
}
Bu kodda 1 tane döngü var switch() bir döngü değil. Ama C++ bilmediğim için oradaki break; komutu while döngüsünü kırar mı bilmiyorum.
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.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.
#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 şekilde çözebilirsin. Tercih edeceğin bir yöntem olur mu bilmem.Switch-case'in böyle bir kullanımı var.
#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) {
if (grade == '\n')
continue;
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;
}
Hocam çok teşekkür ediyorum. En iyi cevap ya da çözüldü durumu nasıl yapılıyor bilmediğim için maalesef yapamıyorum ama sorunumu çözdüğünüz için tekrardan çok teşekkür ederim. İyi forumlar dilerim.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.
Bu şekilde çözebilirsin. Tercih edeceğin bir yöntem olur mu bilmem.
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) { if (grade == '\n') continue; 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; }
Tamam ben de anladım şimdi teşekkür ederim. "break" komutunun switch'den çıkarması baya bi garibime gitti, galiba döngülerden ziyade içinde bulunduğu scope'dan çıkarıyormuş."break" komutu {} 'dan çıkarıyor switch'te. Aynı şey döngüler için de geçerli. Yanlış tabir etmişim ama anlatmak isteneni anlamıştır arkadaş. Sorun o.
Hocam tekrar rahatsız ediyorum fakat acaba press any key to continue yazısını görmeden CMD'yi kapatmamız mümkün mü?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.
Bu şekilde çözebilirsin. Tercih edeceğin bir yöntem olur mu bilmem.
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) { if (grade == '\n') continue; 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; }
o çıktıyı compiler ekliyor. Kullandığın programın ayarlarından kapatmalısın.Hocam tekrar rahatsız ediyorum fakat acaba press any key to continue yazısını görmeden CMD'yi kapatmamız mümkün mü?