不兼容的int赋值类型为int [x]

问题描述 投票:0回答:2

因此,存在n行和m列的矩阵,x y是首先着火的树的坐标。弄清楚洞穴森林被烧毁的天数。

我想我的代码已经关闭了,但它有问题。

#include <iostream>

using namespace std;

int main()
{
    int n,m,p[5][5],x,y,z=1,c,a=1,b=1;
    cout<<"Cate linii de copaci sunt:";
    cin>>n;
    cout<<"Cate coloane de copaci sunt:";
    cin>>m;
    cout<<"Coordonata X a copacului de la care a izbucnit focul:";
    cin>>x;
    cout<<"Coordonata Y a copacului de la care a izbucnit focul:";
    cin>>y;
    p[x][y]=1;
        while (c!=0) {
            c=0;
            if (b!=0) {
                    b=0;
            if (x+a<=n) {
                 p[x+a]=1;
                 b++;
            }
             if (x-a<=n) {
                 p[x-a]=1;
                 b++;
            }
             if (y+a<=m) {
                 p[x+a]=1;
                 b++;
            }
             if (y-a<=m) {
                 p[x-a]=1;
                 b++;
            }
            c=1;
            z++;
            }
            a++;
        }
        cout<<"In total a durat "<<z<<" zile ca sa arda toata padurea.";
    return 0;

}

每当p [x / y - / + a] = 1时就会出现这样的错误:将int分配给int [5]时出现不兼容的类型

如果有人能帮助我理解我错误地显示了这个错误。而且,如果有一个比我写的更好的解决方案,我会恭喜地看到它。我知道这可能是一个简单的错误,但我仍处于编码生涯的开始阶段。

感谢您的帮助/阅读!祝你今天愉快 !

当我声明Matrix时..如果我将列和行更改为另一个值,则错误将在int赋值为int时显示不兼容的类型[我在声明中放入的值]

嗯,没有真正期待任何东西,因为我正在学习,但我希望的结果是没有这个错误,也许是一个不同的错误我会知道要解决但从未见过这个。

c++
2个回答
2
投票

p[5][5]声明了一个二维数组或矩阵,如你所述。如果要插入值,则必须在两个维度中指定位置,例如p[1][2]。目前,您只使用p[x+a]指定一个维度,该维度引用矩阵中的一行,也可以理解为指向一维矩阵的指针。因此,关于将int分配给int[5]的错误,因为您试图将int分配给矩阵中的一行。


0
投票

当您定义2D数组时,起点(数组名称)实际上是int **因此,当您使用p [x-a]取消引用一次时,类型实际上是int *而不是int。因此,如果你试图用int变量设置它,你会得到'不兼容的类型'

© www.soinside.com 2019 - 2024. All rights reserved.