Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
«Разработка программ на С++ и в системе MathCAD» Вариант № 26. Руководитель Назарова М.В,.doc
Скачиваний:
14
Добавлен:
20.05.2014
Размер:
109 Кб
Скачать
☆

Задача №684

В данной действительной квадратной матрице порядка n найти наибольший по модулю элемент, Получить квадратную матрицу порядка n-1 путем выбрасывания из исходной матрицы какой-нибудь строки и столбца, на пересечении которых расположен элемент с найденным значением

Алгоритм:

  1. Задаем массив

  2. Запрашиваем и вводим n

  3. Вводим первый массив

  4. Находим максимальное число в массиве

  5. Записываем второй массив n-1xn-1

  6. Выводим оба массива

#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