C++. Определить элемент квадратной матрицы и его координаты

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

Программа работает, но периодически выдает неверный ответ. Не могу понять в чем ошибка.

#include <iostream>
#include <cmath>

using namespace std;

void check ()
{
    cin.clear();
    while (cin.get() != '\n');
    cout << "Ошибка ввода!" << endl;
    cout << "Повторите ввод!" << endl;
}

int main()
{
while(true) // бесконечный цикл
{
system("cls"); // очищаем экран

    setlocale(LC_ALL, "Russian");
    cout<<"Введие размер марицы: "<<endl;
    int n;
    while (!(cin >> n) || (cin.peek() != '\n'))
    {
    check ();
    cout << "Ошибка ввода." << endl;
    }
    int mat[n][n];
    cout<<"Введие матрицу: "<<endl;
    for (int i=0;i<n;i++)
        for (int j=0;j<n;j++)
             while (!(cin >> mat[i][j]) || (cin.peek() != '\n'))
{
    check ();
    cout << "Ошибка ввода." << endl;
}
    cout << "---------------" << endl;
    for (int i=0;i<n;i++){
        for (int j=0;j<n;j++)
            cout << mat[i][j]<<" ";
    cout<<"\n";}
    cout << "---------------" << endl;
    int x[n];
    int y[n];
    for (int i=0;i<n;i++)
        {
        x[i]=i;
        y[i]=i;
        }

    int m=n;
    int sumi[n],sumj[n];
    int mini, minj,temp,q,w;
//---------------------------------Основной код
for (int i=0;i<n-1;i++)
{

    for (int i=0;i<m;i++)
        {
        sumi[i]=0;
        for (int j=0;j<m;j++)
        sumi[i]=sumi[i]+abs(mat[i][j]);
        }

        mini=sumi[0];
        for (int j=0;j<m;j++)
        if (mini>sumi[i]){mini=sumi[i];}
        for (int i=0;i<m;i++)
        {
        if (mini==sumi[i]){
        for (int q=i;q<m-1;q++)
        for (int j=0;j<m;j++)
               {mat[q][j]=mat[q+1][j];x[q]=x[q+1];}
        break;}}

    for (int j=0;j<m;j++)
        {
        sumj[j]=0;
        for (int i=0;i<m;i++)
        sumj[j]=sumj[j]+abs(mat[i][j]);
        }

        minj=sumj[0];
        for (int j=0;j<m;j++)
        if (minj>sumj[j]){minj=sumj[j];}
        for (int j=0;j<m;j++)
        {
        if (minj==sumj[j])
            {for (int i=0;i<m;i++)
          for (int w=j;w<m-1;w++)
               {mat[i][w]=mat[i][w+1];y[w]=y[w+1];}
        break;}}

m--;
}
//----------------------------------------------------------------
cout << mat[0][0]<<"("<<y[0]+1<<";"<<x[0]+1<<")";
cout<<endl;

int menu;
cout<<endl;
cout<<"Выполнить программу еще раз? (1-да, 2-нет)"<< endl;
do{           while (!(cin >> menu) || (cin.peek() != '\n'))
{
    check ();
    cout << "Ошибка ввода. Допустимые числа (1-да, 2-нет) " << endl;
}
} while((menu<1)|(menu>2));
            if(menu==2)break;
}
}

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