在2D数组中填充数据
filling data in a 2d array
我正在尝试在C 中制作战舰游戏。我正在做的是试图建立船舶位置的启动和终点,然后该程序将填补空白以完成船舶。int size
的部分是告诉该程序在那里。例如。中小型,中型或大型船。由于某种原因,我不明白为什么这个行之有效
int fill(int arr[10][10], int x1, int y1, int x2, int y2, int size){
if(x1 == x2){
if(y1 > y2){
for(int i = y2; i < y1; i++){arr[x1][i] = size;}
}
else{
for(int i = y1; i <= y2; i++){arr[x1][i] = size;}
}
}
else if(y1 == y2){
if(x1 > x2){
for(int i = x2; i < x1; i++){arr[y1][i] = size;}
}
else{for(int i = x1; i <= x2; i++){arr[y1][i] = size;}}
}
return arr;
}
当我通过变量x1 = 4, y1 = 4, x2 = 6, y2 = 4, size = 3
时,它不会填补间隙,并且在开始点/终点之间的空间仍然为空。
我的完整代码可以在此处找到:https://repl.it/@sakshamgoyal/project这仍然是一项正在进行的工作,因此将有很多冗余代码
如果您只需要填充数组,则可以使方法void
的返回类型。除此之外,您的代码还可以:
void fill(int arr[10][10], int x1, int y1, int x2, int y2, int size) {
if (x1 == x2) {
if (y1 > y2) {
for (int i = y2; i < y1; i++) {
arr[x1][i] = size;
}
} else {
for (int i = y1; i <= y2; i++) {
arr[x1][i] = size;
}
}
} else if (y1 == y2) {
if (x1 > x2) {
for (int i = x2; i < x1; i++) {
arr[y1][i] = size;
}
} else {
for (int i = x1; i <= x2; i++) {
arr[y1][i] = size;
}
}
}
}
void fillZero(int a[10][10]) {
for (int i = 0; i < 10; i++)
for (int j = 0; j < 10; j++)
a[i][j] = 0;
}
int main() {
int a[10][10];
fillZero(a);
fill(a, 2, 1, 5, 1, 2);
// Print array:
for (auto &i : a) {
for (int j : i)
cout << j << " ";
cout << endl;
}
}
相关文章:
- Cuda C++:设备上的Malloc类,并用来自主机的数据填充它
- C++:使用缓冲区中的数据填充结构
- 用数据填充未指定大小的数组
- 如何使用数据成员填充派生类的对象到基类的指针数组中
- 深度缓冲区未填充阴影贴图渲染通道中的数据
- 缓冲区填充了不同类型的数据和严格的混叠
- 关于数据对齐和填充的另一个困惑
- 为什么 sys 套接字 recv 函数不填充数据但返回字节长度?
- 缓冲区用不需要的数据填充 char 数组中的最后一个空格
- 在2D数组中填充数据
- 当结构数组在主线程中填充数据时,从结构数组的低索引元素读取是否线程安全
- 用于在C++中填充数据的组合
- 在 2D 动态数组中填充数据
- C++无法填充数据
- 在 c++ 中使用消息结构读取/填充数据缓冲区的正确方法是什么?
- C/C++:在结构中打包或填充数据
- 填充数据适配器时发生故障
- 如何填充数据结构列表
- mfcc++在树控制中填充数据
- 为什么填充数据成员时不一致