将int分配给int [x]

时间:2019-04-17 20:37:55

标签: c++

因此,有一个由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 [我在声明中放入的那个值]的不兼容类型

嗯,因为我正在学习,所以并没有真正期望任何东西,但是我希望得到的结果是没有这个错误,也许是我本可以解决但从未见过的另一个错误。

2 个答案:

答案 0 :(得分:2)

p[5][5]声明一个二维数组或矩阵。当您要插入值时,必须在两个维度中指定位置,例如p[1][2]。当前,您仅使用p[x+a]指定一个维度,该维度指的是矩阵中的一行,也可以理解为指向一维矩阵的指针。因此,由于尝试将int分配给矩阵中的一行,导致将int[5]分配给int的错误。

答案 1 :(得分:0)

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