因此,有一个由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 [我在声明中放入的那个值]的不兼容类型
嗯,因为我正在学习,所以并没有真正期望任何东西,但是我希望得到的结果是没有这个错误,也许是我本可以解决但从未见过的另一个错误。
答案 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变量进行设置,则会得到“不兼容的类型”