填充二维数组中的数据

时间:2017-12-11 02:00:25

标签: c++ arrays multidimensional-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 它仍然是一项正在进行中的工作,因此会有很多冗余代码

1 个答案:

答案 0 :(得分:0)

如果只需要填写数组,则可以创建方法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;
    }
}