visual c++数组和坐标周围的值
visual C++ Array Sum Values Around Coordinate
我很难在下面给出的坐标周围对多维数组的值求和。索引位置的逻辑有问题。任何想法都会很有帮助,如果需要更多的信息,请不要犹豫,问我。
#include <iostream>
#include <ctime>
using namespace std;
int main()
{
srand(time(0));
int displayArray[11][11];
cout<<"tttttttttttttColumnnn";
for(int column=1;column<10;column++)
{
cout<<"t "<<column;
}
cout<<"nn";
//fill array with random numbers
for(int i=0;i<9;i++)
{
for(int m=0;m<9;m++)
{
displayArray[i][m]=rand()%10;
}
}
cout<<"nnn";
//main data printout
for(int k=0;k<9;k++)
{
cout<<"Row "<<k+1<<"t ";
for(int l=0;l<9;l++)
{
cout<<displayArray[k][l]<<"t";
}
cout<<endl<<endl;
}
cout<<"nn";
int row=0, column=0;
cout<<"What array cell would you like to see? (Press enter after each entry)n";
cout<<"Row = ";
cin>>row;
cout<<"Column = ";
cin>>column;
cout<<"nThe number "<<displayArray[row-1][column-1]<<" is in cell "<<row<<","<<column;
int coord1=displayArray[row-2][column+2],
coord2=displayArray[row+2][column+2],
coord3=displayArray[row-2][column-2],
coord4=displayArray[row-2][column+2],
coord5=displayArray[row-2][column+2],
coord6=displayArray[row-2][column+2],
coord7=displayArray[row-2][column+2],
coord8=displayArray[row-2][column+2];
int sum=coord1+coord2+coord3+coord4+coord5+coord6+coord7+coord8;
cout<<"nnThe sum of the cells surrounding "<<row<<","<<column<<" is "<<sum;
cin.get();
cin.get();
return 0;
}
您的问题可能是您正在使用行/列-2和行/列+2作为相邻方向,这是不正确的。如果(row-1, col-1)是当前单元格,则需要row/col -2和row/col +0。
int coord1=displayArray[row-2][column-2],
coord2=displayArray[row-2][column-1],
coord3=displayArray[row-2][column],
coord4=displayArray[row-1][column-2],
coord5=displayArray[row-1][column],
coord6=displayArray[row][column-2],
coord7=displayArray[row][column-1],
coord8=displayArray[row][column];
int sum=coord1+coord2+coord3+coord4+coord5+coord6+coord7+coord8;
这可以更程序化地完成,但是:
int sum = 0;
for (int x=row-2; x<=row; x++) {
for (int y=column-2; y<=column; y++) {
if ((x != row-1) || (y != column-1)) { //Avoids "center" cell (self)
sum += displayArray[x][y]
}
}
}
所以如果我理解正确的话,用户输入一个行和列号,对应于位于displayArray[row-1][column-1]
因此,单元格周围的坐标应该是。
displayArray[row][column]
displayArray[row-1][column]
displayArray[row-2][column]
displayArray[row][column-1]
displayArray[row-2][column-1]
displayArray[row][column-2]
displayArray[row-1][column-2]
displayArray[row-2][column-2]
我不确定你为什么要用你现在的坐标,但这是你的问题。
此外,您还需要确保如果用户选择数组边界上的单元格,程序不会崩溃。如果您试图搜索单元格(0,0)周围的坐标,当试图加载displayArray[-1][-1]
您的错误是将基于0的索引转换为基于1的索引。阵列从0开始。你让它们进入以1为基底的行。然后把它周围的8个数相加。如果他们输入基于0的数字并输入N,您将希望对每行/列求和[N -1]、N和N +1。为了处理以0为基数的情况,你要处理n-2 n-1和n,但你要处理的是n-2和n+2。你也没有计算任何靠近右边的行的中间。
最好的做法是不要那样做数学。它将读取行/列号,然后立即减去1使其基于0,并从那时起将其处理为基于0。
相关文章:
- QGraphicsPolygonItem在拖动时未更新QPolygonF坐标
- 在C++中使用GDAL可以将图像的像素坐标转换为lat,long吗
- UE4-如何在给定4个屏幕坐标的情况下缩放纹理或材质
- 变量周围的堆栈'...'已损坏
- OpenGL 4.3 错误地将第 4 个纹理坐标映射到与第 3 个纹理坐标相同的位置
- 运行时检查失败 #2 变量"A"周围的堆栈已损坏
- OpenCV代码不会检测人脸的数量,也不会在脸周围放一个圆圈
- 比较两个节点坐标的最佳方法是什么?
- 在 OpenGL 中将笛卡尔世界坐标转换为球面局部坐标
- SDL2 调整窗口大小后如何缩放鼠标坐标?
- 如何在C++中获取坐标?
- 为什么我的 VS 代码调试器在我的C++代码周围弹跳?
- 如何将 x.y 坐标的值存储在不同的数组中
- 如何将鼠标坐标转换为"mm"
- 运行时检查失败 #2 - 变量"e"周围的堆栈已损坏。发生
- 重心坐标并不总是有效(3d)
- 变量周围的堆栈'sortArray'已损坏
- 需要帮助编写 for 循环以在字符串周围创建边框
- 尝试渲染像素坐标时,简单线条渲染失败
- visual c++数组和坐标周围的值