Краш программы при смешении в право на одну строку

Стоит задача:

Удалить строку, в которой находится наибольший элемент матрицы

Я реализовал это так :

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.

→ Ссылка