gpt4 book ai didi

c++ - 排序函数删除数组的一部分,C

转载 作者:太空宇宙 更新时间:2023-11-04 06:26:00 25 4
gpt4 key购买 nike

我遇到了这个非常奇怪的问题。稍后您将看到的函数应该确保二维数组中的所有元素(字符)都在最大位置,也就是说,任何字符上方都没有空格。例如,一个板可能看起来像这样:

1 X * * X ^
2 * X ^ *
3 o o * X ^
4 o ^ X X X
5 ^ * X * ^
1 2 3 4 5

在 (2,1) 处有一个问题,因为在非空白空间上方有一个空白空间。

我的函数正确地进行了排序,但它删除了底行中上方有空格的所有字符。对于我的生活,我无法弄清楚为什么。这是我的排序函数。

int bb_float_one_step(BBoard board){
int i,j;
for (i = 0; i < board->rows; i++){
for (j = 0; j < board->cols; j++){
if (board->boardDim[i][j] == None && (board->boardDim[i + 1][j] != None && i + 1 <= board->rows)){
char tmp = board->boardDim[i + 1][j];
board->boardDim[i + 1][j] = board->boardDim[i][j];
board->boardDim[i][j] = tmp;
}
}
}
for (i = 0; i < board->rows; i++){
for (j = 0; j < board->cols; j++){
printf("%c",board->boardDim[i][j]);}printf("\n");}
}

下面是完整序列的图片,程序打印了一 block 板。要求用户选择要“弹出”的区域。然后一个函数替换所有与空格相连的字符。然后在图片的最后部分,您可以看到字符是如何被删除的。没有边框的板在那里,因为我用它来检查字符是否真的被删除了。 enter image description here提前感谢您 1,阅读整篇文章,以及 2,您能提供的任何帮助。

最佳答案

由于您要将当前行与下一行进行比较,因此您应该使用 for(i = 0; i < board->rows-1; i++)然后在你的复杂 if 语句中,去掉 && i <= board->rows .无论如何,这应该是小于,而不是小于或等于。您将越界并在数组中产生垃圾。

关于c++ - 排序函数删除数组的一部分,C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26921691/

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