2014-09-13 98 views
0

我试图模仿一个while循环来计算设定行数中的元音。第一个输入是要输入的总行数。然而,这会启动循环并输出一个0.这意味着它只能计算7行而不是8个。我可以通过将count设置为-1来解决此问题,但它仍然会输出随机零。有没有办法可以改变循环来解决这个问题?C++虽然循环启动得太早

#include <iostream> 
#include <cstring> 
using namespace std; 


int main() { 

    string sentence; 
    int count; 
    int total; 
    int length; 
    int lengthcount; 
    int output; 
    output = 0; 
    length = 0; 
    count = 0; 
    total = 0; 
    lengthcount = 0; 
    cin >> total; 

    while (total != count){ 
     getline(cin, sentence); 
     length = sentence.length(); 
     while (length != lengthcount){ 
      switch(sentence[lengthcount]){ 
       case 'a': 
        ++output; 
        break; 
       case 'e': 
        ++output; 
        break; 
       case 'i': 
        ++output; 
        break; 
       case 'o': 
        ++output; 
        break; 
       case 'u': 
        ++output; 
        break; 
       case 'y': 
        ++output; 
        break; 

      } 
      ++lengthcount; 
     } 
     cout << output << " "; 
     ++count; 
     lengthcount = 0; 
     output = 0; 
    } 

return 0; 
} 
+1

http://stackoverflow.com/questions/8146106/does-case-switch-work-like-this将帮助您简化您的代码。 – 2014-09-13 14:03:46

回答

2

您可以像读取行本身一样阅读行数。

string totalstring; 
getline(cin, totalstring);  
total = stoi(totalstring); 

这样,换行符将被消耗。

+0

我在哪里添加?另外stoi做什么? – jarkia 2014-09-13 14:27:53

+0

你可以用这个替换'cin >> total;'。 'stoi'只是字符串到整数。 – broncoAbierto 2014-09-13 15:43:06