Страницы

Поиск по вопросам

воскресенье, 12 января 2020 г.

Ошибка в сортировке двумерного массива

#c #сортировка


void main(void)
{

    srand(time(NULL));

    int A[N][M], circles = N + M, swap;

    for (int i = 0; i < N; i++)
    {
        for (int j = 0; j < M; j++)
        {
            A[i][j] = 3 + rand() % 100;
        }
    }


    while (circles)
    {
        for (int i = 0; i < (circles - 1); i++)
        {
            if (*(A + i) > *(A+i+1)) /*ругается на этот if*/ {
                swap = *(A + i);
                *(A + i) = *(A + i + 1);
                *(A + i + 1) = swap;
            }
        }
        circles--;
    }


}


Пишет ошибку: 


  Error 3   error C2106: '=' : left operand must be l-value


В чём может быть дело?
    


Ответы

Ответ 1



Вы пытаетесь сравнивать строки матрицы и менять их между собой, однако оператора сравнения строк матрицы и оператора присваивания int[] к int[] у вас не существует. На то и ругается.

Ответ 2



на две строчки после swap = *(A+i); *(A + i) = *(A + i + 1); *(A + i + 1) = swap; Что здесь получается? Упрощённо? int = int int = int А что надо? &int = int &int = int Слева должна быть ссылка, а не абсолютное значение. Кроме того, на вскидку размер массива странно рассчитывается - N+M, вместо N*M.

Комментариев нет:

Отправить комментарий