2017-04-04 69 views
-1

开始您需要输入多少个元素的程序,例如,如果选择了3您可以键入一个b c,但是如果输入多于3个元素a b c d该程序立即崩溃。 还没有想出如何输入超过4个元素a b c d它只会读取a b c部分。如您所愿,如果你在更多的数字比你count进入,因为它是如何解析输入的输入数组问题

#pragma hdrstop 
#pragma argsused 

#include <string> 
#include <tchar.h> 
#include <conio.h> 
#include <stdio.h> 
#include <math.h> 
#include <iostream.h> 
#include <iomanip> 
#include <sstream> 


int main() { 
    char teikums[100]; // Masiva lielums 
    int c, i, count, patsk; // Patskani 
    char yesno; // Atkartosanas Mainigais 
    do { 
     system("cls"); // Notira Ekranu 
     patsk = 0; // Pieskir vertibu 
     cout << "Ievadi Massiva lielumu 1-100: "; 
     cin >> count; 
     if (count > 100 || count < 1) { 
      cout << "Massivs nedriklst but lielaks par 100 vai mazaks par 0"; 
     } 
     else { 
      cout << "Ievadi " << count << " burtus vienu pa vienam\n"; 
      for (i = 1; i <= count; i++) { 

       cin >> teikums[i]; 
      } 
      cout << "\nIzmantotie Patskani:"; 
      for (i = 0; teikums[i] != '\0'; i = i + 2) { 
       if (teikums[i] == 'a' || teikums[i] == 'e' || 
        teikums[i] == 'o' || teikums[i] == 'o' || 
        teikums[i] == 'u' || teikums[i] == 'A' || 
        teikums[i] == 'E' || teikums[i] == 'I' || 
        teikums[i] == 'O' || teikums[i] == 'U') { 
        ++patsk; 

        cout << teikums[i]; 

       } 

      } 

      cout << "\nPatskanu Skaits: " << patsk; 
     } 
     cout << ("\nVai velaties atkartot(Y/cits):"); 
     // prasa lietotajam vai velas atkartot 
     cin >> yesno; 
     if (yesno == 'y' || yesno == 'Y') { 
     } 
     else { 
      return 0; 
     } 
    } 
    while (tolower(yesno) != 'n'); 
    getch(); 
} 
+0

'for(i = 1; i <= count; i ++)'and'for(i = 0; teikums [i]!='\ 0'; i = i + 2)'不匹配。此外,即使程序结束与预期行为相反,它似乎也不会崩溃。 – BLUEPIXY

+0

'teikums [i] =='o'' - >'teikums [i] =='i''''''''''''#' – BLUEPIXY

+0

'#include ''''#include ' – BLUEPIXY

回答

0

程序将无法运转。

for (i = 1; i <= count; i++) { 

    cin >> teikums[i]; 
} 

比方说,你count为1,您在1 2进入。 这将循环一次,并说teikum[1]为1,并且2仍然等待被输入流抓取。下面,你有,

cin >> yesno; 

现在将设置yesno2和你的程序将终止,因为2 != 'n'。您需要根据格式的要求正确输入数据,或者使用类似cin.ignore('\n')cin来清除它们,这将忽略当前的输入行。

此外,你开始你的i在1并且进行计数,但你的数组只有大小100.如果count为100,它将尝试访问teikum[100],这将会出界,因为你的数组从0到99