c++ - 为什么这个帕斯卡三角程序不起作用?

标签 c++ pascals-triangle

<分区>

行是用户输入的。

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;
}

当行数为 7 时,它确实会给出正确的结果, 但是当输入的行大于 8 时它会以某种方式崩溃。

最佳答案

很可能 triangle 声明时没有为您使用的索引提供足够的内存。如果 row==column==8 那么你需要像这样声明它:

double triangle[9][9];

因为 C++ 使用从零开始的索引,所以允许索引在 0 到 8 范围内(含 0 和 8)。您的声明很可能是这样的:

double triangle[8][8];

关于c++ - 为什么这个帕斯卡三角程序不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14789782/

相关文章:

python - 如何将python float转换为要在C++程序中解释的字节

c++ - 使用 C++ 的高级类型

c++ - 私有(private)元素错误

java - 无法让帕斯卡的三角递归程序工作--Java

c - 使用 C 中的 for 循环输出帕斯卡三角形

algorithm - Code Golf :生成帕斯卡三角形

c++ - 在 C++ 中重载运算符时如何获取 THIS

c++ - C++:指向 vector (及其元素)的指针是否稳定,因为 vector 将在内存中迁移以适应它们增长时容纳的更多元素?

java - 一个循环中的帕斯卡三角形

algorithm - 如何有效地计算帕斯卡三角形中的一行?