С++ Работа с массивами
после ввода значений создается матрица, после она должна отобразится симметрично относительно вертикальной оси с нумерацией столбцов в обратно порядке - получается, но при выводе результата появляется нумерация строк и еще одна неизвестная строка со значениями. Помогите найти ошибку.
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 шт):
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 - это опять выход за диапазон
В общем аккуратно пройдитесь по всему коду и проверьте циклы, чтобы
- их кол-во соответствовало тем значениям, что вы задали
- чтобы не было выходов за диапазон массива