Краш программы при смешении в право на одну строку
Стоит задача:
Удалить строку, в которой находится наибольший элемент матрицы
Я реализовал это так :
int max = matrix[0][0];
int stringcounter = 0;
for (i = 0; i < string; i++)
{
for (j = 0; j < column; j++)
{
if (matrix[i][j] > max)
{
max = matrix[i][j];
stringcounter = i;
}
}
}
cout << "Max=" << max;
for (i = stringcounter; i < string; i++)
{
for (j = 0; j < column; j++)
{
matrix[i][j] = matrix[i + 1][j];
}
}
string--;
cout << "\nMatrix view after delete string:\n";
for (i = 0; i < string; i++)
{
for (j = 0; j < column; j++)
{
cout << setw(2) << matrix[i][j];
}
cout << endl;
}
Но при смещении строки программа крашится и все, в чем моя ошибка? Подскажите пожалуйста)
Ответы (1 шт):
Автор решения: EOF
→ Ссылка
В цикле
for (i = stringcounter; i < string; i++)
{
for (j = 0; j < column; j++)
{
matrix[i][j] = matrix[i + 1][j];
}
}
при достижении i значения string - 1 выражение matrix[i + 1][j] пытается обратиться к памяти, которая находится за границами массива. Замените условие в цикле на i < string - 1.