У меня эта очень странная проблема. Функция, которую вы увидите в данный момент, должна гарантировать, что все элементы (символы) в 2D-массиве находятся там в крайнем положении, т. Е. Нет никакого пустого пространства над любым из символов. Например доска может выглядеть следующим образом:Функция сортировки Удаление части массива, C
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");}
}
Ниже представлена картинка в полный цикл. Программа печатает плату. Пользователю предлагается выбрать регион для «pop». Затем функция заменяет все символы, связанные с пробелом. Затем в последней части изображения вы можете увидеть, как символы удаляются. Плата, у которой нет границы, есть потому, что я использовал ее, чтобы проверить, действительно ли символы были удалены или нет. Благодарим вас за продвинутый 1, прочитав весь этот пост и 2, любую помощь, которую вы можете дать.
'i + 1 <= board-> строк' не кажется многообещающим. – WhozCraig
Итак, что вы пытаетесь сделать, это удалить все пустые пространства, а затем переместить эти пустые пространства в конец массива (последняя строка). Если это так, если вы внедрили свою доску в качестве массива с 1-м массивом, она станет простым вызовом функции для перемещения пробелов до конца и «сжимания» оставшихся символов. – PaulMcKenzie
Отладчики - ваши друзья, попробуйте использовать их. –