Задача №684
В данной действительной квадратной матрице порядка n найти наибольший по модулю элемент, Получить квадратную матрицу порядка n-1 путем выбрасывания из исходной матрицы какой-нибудь строки и столбца, на пересечении которых расположен элемент с найденным значением
Алгоритм:
Задаем массив
Запрашиваем и вводим n
Вводим первый массив
Находим максимальное число в массиве
Записываем второй массив n-1xn-1
Выводим оба массива
#include <vcl.h> // Я не знаю что это означает, оно автоматически задается в Builder6
#pragma hdrstop // Я не знаю что это означает, оно автоматически задается в Builder6
#pragma argsused // Я не знаю что это означает, оно автоматически задается в Builder6
#include<iostream.h>
#include<fstream.h>
#include<conio.h>
#include<iomanip.h>
void main()
{
int n;
int i,j;
int i0,j0;
double masA[50][50]; //заданный массив nxn
double masB[49][49]; //получаемый из первого массив
double max;
cout<<"vvedite 0<n<=50"<<endl; // запрос, ввод и проверка n.
cin>>n;
while(n>50||n==0||n<0){
cout<<"Error! 0<n<=50"<<endl;
cout<<"vvedite 0<n<=50"<<endl;
cin>>n;}
cout<<"vvedite massiv nxn"<<endl; // ввод первого массива
for(i=0;i<n;i++)
for(j=0;j<n;j++)
cin>>masA[i][j];
max=masA[0][0]; // нахождение максимального числа в массиве
for(i=0;i<n;i++)
for(j=0;j<n;j++)
if(masA[i][j]>max){
max=masA[i][j];
i0=i;
j0=j;
}
for(i=0;i<n-1;i++) //запись второго массива n-1xn-1,
for(j=0;j<n-1;j++){
if(i<i0&&j<j0)
masB[i][j]=masA[i][j];
else if(i<i0&&j>=j0)
masB[i][j]=masA[i][j+1];
else if(i>=i0&&j<j0)
masB[i][j]=masA[i+1][j];
else if(i>=i0&&j>=j0)
masB[i][j]=masA[i+1][j+1];
}
cout<<setprecision(4); //форматирование
cout<<"vvedenniy massiv"<<endl; // вывод на экран обоих массивов
for(i=0;i<n;i++){
for(j=0;j<n;j++)
cout<<setw(6)<<masA[i][j]<<" ";
cout<<endl;
}
cout<<"max znachenie i koordinati"<<endl;
cout<<"max="<<max<<" "<<"i="<<i0+1<<" "<<"j="<<j0+1<<endl;
cout<<"noviy massiv"<<endl;
for(i=0;i<n-1;i++){
for(j=0;j<n-1;j++)
cout<<setw(6)<<masB[i][j]<<" ";
cout<<endl;
}
ofstream ptk("k584.txt"); //объявление потока записи в файл
if(ptk==0)cout<<"error otkr faila"<<endl;
ptk<<setprecision(4); //форматирование
ptk<<"vvedenniy massiv"<<endl; // вывод в файл обоих массивов
for(i=0;i<n;i++){ for(j=0;j<n;j++)
ptk<<setw(6)<<masA[i][j]<<" ";
ptk<<endl;
}
ptk<<"max znachenie i koordinati"<<endl;
ptk<<"max="<<max<<" "<<"i="<<i0+1<<" "<<"j="<<j0+1<<endl;
ptk<<"noviy massiv"<<endl;
for(i=0;i<n-1;i++){
for(j=0;j<n-1;j++)
ptk<<setw(6)<<masB[i][j]<<" ";
ptk<<endl;
}
getch();
}
Тест:
vvedite 0<n<=50
3
vvedite massiv nxn
1 1 1
2 2 2
3 3 3
vvedenniy massiv
1 1 1
2 2 2
3 3 3
max znachenie i koordinati
max=3 i=3 j=1
noviy massiv
1 1
2 2
