gpt4 book ai didi

c - 交换两个相邻元素的功能不起作用

转载 作者:行者123 更新时间:2023-11-30 19:57:42 24 4
gpt4 key购买 nike

当我尝试移动合法图 block (即与“空白”图 block 0 相邻的图 block )时,没有任何反应。如果图 block 不合法,则程序将按其应有的方式运行。这是移动功能:

bool move(int tile)
{
for (int i = 0; i < d; i++)
{
for (int j = 0; j < d; j++)
{
if (board[i][j] == tile)
{
// stops program from going out of bounds
if (j < d)
{
if (board[i][j + 1] == 0)
{
swap(board[i][j], board[i][j + 1]);
return true;
}
}

if (j > 0)
{
if (board[i][j - 1] == 0)
{
swap(board[i][j], board[i][j - 1]);
return true;
}
}

if (i > 0)
{
if (board[i - 1][j] == 0)
{
swap(board[i][j], board[i - 1][j]);
return true;
}
}

if (i < d)
{
if (board[i + 1][j] == 0)
{
swap(board[i][j], board[i + 1][j]);
return true;
}
}
}
}
}

return false;
}

和交换函数:

void swap(int i, int j)
{
int temp = i;
i = j;
j = temp;
}

所发生的情况是,董事会看起来保持不变,没有进行任何更改。

最佳答案

您需要使用指针来更改 board[i][j] 处的内存。
尝试这样的事情

void swap(int *i, int *j)
{
int temp = *i;
*i = *j;
*j = temp;
}

然后在您的调用代码中

swap(&board[i][j], &board[i][j - 1]);

关于c - 交换两个相邻元素的功能不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39397507/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com