С++ Работа с массивами

после ввода значений создается матрица, после она должна отобразится симметрично относительно вертикальной оси с нумерацией столбцов в обратно порядке - получается, но при выводе результата появляется нумерация строк и еще одна неизвестная строка со значениями. Помогите найти ошибку.

    for (int j = 0; j < m; j++)//нумерация столбцов
    {
        scanf_s("j");
        printf(" %d\ ", j+1);
    }
    printf("\n");
 
    for (int i = -1; i < n; i++)// нумерация строк
    {
 
        scanf_s("i");
        printf("%2d\ ", i + 1);
 
        for (int j = 0; j < m; j++)
 
        {
            printf("%2d\ ", A[i][j]);
        }
            printf("\n");
    }
    printf("\n");
    
    for (int j = m; j != -1; j--)//нумерация столбцов
    {
        scanf_s("j");
        printf(" %d\ ", j );
    }
    printf("\n");
 
    for (int i = 0; i< n; i++)// нумерация строк
    {
 
        scanf_s("i");
        printf("%2d\ ", i+1);
 
        for (int j = m; j !=-1; j--)
        {
            printf("%2d\ ", A[i][j]);
        }
        printf("\n");
    }

Ответы (1 шт):

Автор решения: Zhihar
for (int i = -1; i < n; i++)// нумерация строк
{

    scanf_s("i");
    printf("%2d\ ", i + 1);

    for (int j = 0; j < m; j++)

    {
        printf("%2d\ ", A[i][j]);
    }
        printf("\n");
}

а не вылезаете ли вы за диапазон?

for (int i = -1; i < n; i++)

а потом у вас

printf("%2d\ ", A[i][j]);

т.е. в определённый момент у вас обращение к

A[-1][j]

а это как-то нехорошо

P.S.

и просто по коду замечания

зачем такой монстр нужен?

for (int j = m; j !=-1; j--)

почему бы его не заменить на

for (int j = m; j >= 0 ; j--)

и опять кстати если подсчитать сколько этапов цикла будет при этом [0..m], то получается, что m + 1 - это опять выход за диапазон

В общем аккуратно пройдитесь по всему коду и проверьте циклы, чтобы

  1. их кол-во соответствовало тем значениям, что вы задали
  2. чтобы не было выходов за диапазон массива
→ Ссылка