2015-09-15 3 views
-5
unsigned int aCnt=0, eCnt=0, iCnt=0, oCnt=0, uCnt=0; 
char ch; 
while (std::cin >> ch) 
    switch (ch){ 
     case 'a': 
      ++aCnt; 
      break; 
     case 'e': 
      ++eCnt; 
      break; 
     case 'i': 
      ++iCnt; 
      break; 
     case 'o': 
      ++oCnt; 
      break; 
     case 'u': 
      ++uCnt; 
      break; 
    } 

Что означает while (std::cin >> ch)? Я вошел в письмо, и программа ничего не показывала.Что означает while (cin >> ch)?

+3

Что вы ожидаете показать и почему? –

+2

Этот код не должен показывать ничего, независимо от того, что вы вводите. – deviantfan

ответ

0

Это код плохого стиля. Он будет работать и считать все символы в переключателе. Вот моя версия, которая поможет вам понять:

unsigned int aCnt = 0, eCnt = 0, iCnt = 0, oCnt = 0, uCnt = 0; 
char ch; 
while (std::cin >> ch) 
{ 
    switch (ch) { 
    case 'a': 
     ++aCnt; 
     break; 
    case 'e': 
     ++eCnt; 
     break; 
    case 'i': 
     ++iCnt; 
     break; 
    case 'o': 
     ++oCnt; 
     break; 
    case 'u': 
     ++uCnt; 
     break; 
    case '-': 
     goto end; 
    } 
} 
end: 
cout << aCnt << "\t" << eCnt << "\t" << iCnt << "\t" << oCnt << "\t" << uCnt; 

Так ставить «-», а затем Enter, чтобы увидеть результаты.

Вот более простой способ сделать это

unsigned int aCnt =0, eCnt = 0, iCnt = 0, oCnt = 0, uCnt = 0; 
char ch; 
bool getCharacter = true; 
while (getCharacter) 
{ 
    std::cin >> ch; 
    switch (ch) { 
    case 'a': 
     ++aCnt; 
     break; 
    case 'e': 
     ++eCnt; 
     break; 
    case 'i': 
     ++iCnt; 
     break; 
    case 'o': 
     ++oCnt; 
     break; 
    case 'u': 
     ++uCnt; 
     break; 
    case '-': 
     getCharacter = false; 
     break; 
    } 
} 
cout << aCnt << "\t" << eCnt << "\t" << iCnt << "\t" << oCnt << "\t" << uCnt; 
+0

Или просто используйте карту. –

0

cin>>ch означает, что вы что-то входной переменной ch.
while(cin>>ch) означает цикл для ввода ввода.
Нет cout, так что вы ничего не можете наблюдать.

Вы можете добавить некоторый код как:

switch (ch){ 
    case 'a': 
     ++aCnt; 
     cout<<aCnt<<endl;//added 
     break; 
    case 'e': 
     ++eCnt; 
     cout<<eCnt<<endl;//added 
     break; 
    case 'i': 
     ++iCnt; 
     cout<<iCnt<<endl;//added 
     break; 
    case 'o': 
     ++oCnt; 
     cout<<oCnt<<endl;//added 
     break; 
    case 'u': 
     ++uCnt; 
     cout<<uCnt<<endl;//added 
     break; 
} 

Вы должны увидеть номер каждый раз, когда вы вводите один из «а, е, я, о, у»

Смежные вопросы