2012-12-15 152 views
0

嗨,大家好,我對C++有點新,所以我正在編寫一個程序,它工作正常,但是有一個問題。每次輸入大於100的數字,我的程序崩潰,我不知道爲什麼。任何人都可以幫我嗎?C++程序崩潰

程序代碼:

#include <iostream> 
#include <cmath> 

using namespace std; 

int main() 
{ 
    int i = 10; 

    while(i > 0) 
    { 
    i--; 

    int b = 0, c = 1, d = 0, e, number, how = 0, number1, start, to, number2, split1, split2, mass, start1 = 0, start2 = 0, number3, how1, number4, number5; 

    cout << "\nIveskite skaiciu \n"; 
    cin >> number; 
    cout << "\n"; 

    number1 = number; 

    while(number1 > 0) 
    { 
     number1 = number1/10; 
     how = how + 1; 
    } 

    how1 = how - 1; 
    start = pow(10, (how - 1)); 
    to = pow(10, how); 
    mass = to - start; 
    number2 = start - 1; 
    int split[mass][mass], numbers[mass], ok[mass]; 

    while(start1 < mass) 
    { 
     start1++; 

     e = number2 + start1; 

     numbers[start1] = e; 
     split[start1][0] = e; 
    } 

    while(start2 < mass) 
    { 
     start2++; 

     number3 = numbers[start2]; 

     d = 0; 
     b = 0; 
     c = 1; 

     while(d <= how1) 
     { 
      d++; 

      split1 = number3%10; 
      split2 = number3/10; 
      number3 = split2; 
      split[start2][d] = split1; 
      number4 = b + split[start2][d]; 
      b = number4; 
      number5 = c * split[start2][d];; 
      c = number5; 

     } 

    if(number4 == number5) 
    { 
     ok[mass] = numbers[start2]; 

     cout << number4 << " " << number5 << " >" << ok[mass] << endl; 
    } 
    } 
} 
+0

什麼是錯誤消息?它會發生什麼事? – Borgleader

+0

請在發佈前請**縮進**和**格式**您的代碼,但目前無法閱讀。 – 2012-12-15 20:41:26

+1

VLA不是標準的,您可以使用'log10'函數來獲取整數的長度。 – chris

回答

1

在我看來,它的二維數組拆分爲得到你的籌碼太大。您可以嘗試按照以下建議動態分配它:how to deal with large 2D arrays

+2

而對於C++版本,http://www.cplusplus.com/doc/tutorial/dynamic / – dutt