火灾模拟程序不知道如何初始化它

fire simulation program dont know how to initialize it

本文关键字:初始化 模拟程序 不知道 火灾      更新时间:2023-10-16

程序应该输出一个12x24的矩阵,该矩阵以0为界,中间有1,在(1,1)的位置有2,我不知道在哪个部分初始化M[row][col]=2;因为无论我把它放在哪里,它都不会输出2到第一个位置,有什么建议吗?

int main()
{
    int M[N/2][N];
    int ROWS, COLS, row, col;
    int r, c;
    ROWS = sizeof(M) / sizeof(M[0]);
    COLS = sizeof(M[0]) / sizeof(M[0][0]);
    fill(M, ROWS, COLS, 1, 1);
    row=1;
    col=1;
    for(r=0; r< ROWS; r++)
    {
        for(c=0; c < COLS; c++)
        { 
            if (r==0||r ==ROWS-1)
            {
                M[ROWS][COLS]=0;
            }
            else if(c==0||c==COLS-1)
            {
                M[ROWS][COLS]=0;
            }
            else {
                M[ROWS][COLS]=1;    
            }
            cout<< M[ROWS][COLS];
        }
        cout << endl;
    }
    print(M, ROWS, COLS);
    return 0;
}

我注意到你使用ROWSCOLS作为for循环内的数组索引…你可能是想使用循环变量rc

另外,对于常规变量使用大写的名字被认为是不好的形式C中的约定是只对宏使用大写标识符。

我打赌如果你写M[1][1]=2;就在行count <<M[ROWS][COLS]之前,您将看到您想要的输出。这样做是愚蠢的,因为这样您将重复地将单个位置(M[1][1])分配给相同的值——确切地说,是288次——但是如果每次打印时都将M[1][1]设置为正确的值,则不会打印错误的值。当然,还有更好的方法。

清晰地分离程序执行的操作会好得多。它必须做两件事:

  1. 初始化数组
  2. 打印数组的内容

这些操作应该由不同的函数执行。也就是说,一次调用一个函数来初始化整个数组,然后调用另一个函数来打印整个数组。这样,在打印任何单元格之前,数组中的每个单元格都被设置为正确的值。

如果你这样做,你应该很容易就能在你的代码中找到一个合适的地方设置M[1][1]=2,这样你就能看到正确的打印输出。

我假设这是一个练习,稍后将扩展到对数组做更多的事情,因此首先使用数组是有意义的。如果是这样,您很有可能需要在某个时候再次打印数组,然后您会非常高兴自己编写了一个函数,该函数打印数组,而不做任何其他操作