2013-02-09 89 views
0

行是用户输入的。这个Pascal的三角形程序为什么不起作用?

cout << "Input the number of rows: "; 
cin >> row; 
column=row; 

int triangle[row][column]; 

for (i=0;i<=row;i++){ 
    for (j=0;j<=column;j++){ 
      triangle[i][j]=0; 
    } 
} 

for (i=0;i<=row;i++){ 
    for (j=0;j<=i;j++){ 
      if (j==0 || j==i){ 
      triangle[i][j]=1; 
      } else { 
      triangle[i][j]=triangle[i-1][j]+triangle[i-1][j-1]; 
      } 
    } 
} 

cout << "Pascals triangle with " << row << " rows."; 

for (i=0;i<=row;i++){ 
    for (j=0;j<=i;j++){ 
     cout << triangle[i][j] << "\t"; 
    } 
    cout << endl; 
} 

它给出了正确的结果,当行就是七, 但是当输入行大于8

+4

请显示其余的代码。特别是“三角形”的声明。 – 2013-02-09 15:49:57

回答

2

最有可能triangle不具有足够的内存来索引宣布它在某种程度上你崩溃使用。如果row==column==8那么你需要声明它是这样的:因为C++使用

double triangle[9][9]; 

从零开始指数这使得指数在0〜8范围内。最有可能你的声明是这样的:

double triangle[8][8]; 
+0

Wew。谢谢。我忘了那个。对不起,这里是新手。 – user2027369 2013-02-09 15:56:29

+0

如果答案是正确的,你应该接受它 – 2013-12-19 00:27:04