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

Задача №684

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

Алгоритм:

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

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

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

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

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

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

#include<vcl.h> // Я не знаю что это означает, оно автоматически задается вBuilder6

#pragmahdrstop// Я не знаю что это означает, оно автоматически задается вBuilder6

#pragmaargsused// Я не знаю что это означает, оно автоматически задается в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

Задача № 406

Пусть задан вектор х (х1, х2, х3… хn). Составить подпрограмму-функцию для вычисления величины.

N=0, если х1≠0

N=n, если х1= х2= х3=…- хn=0

N=m, если х1= х2= х3=…=хm=0 и хm+1≠0 (m<n)

Алгоритм:

  1. Ввод

  2. Запрос числа элементов массива

  3. Запрос и ввод массива

  4. Эхо-вывод на экран массива

  5. Объявление потока вывода в файл

#include<vcl.h> // Я не знаю что это означает, оно автоматически задается вBuilder6

#pragmahdrstop// Я не знаю что это означает, оно автоматически задается вBuilder6

#pragmaargsused// Я не знаю что это означает, оно автоматически задается вBuilder6

#include<iostream.h>

#include<conio.h>

#include<fstream.h>

int N(int n, double X[]); // прототип ф-ции

int N(int n, double X[])

{

int i;

int result=-1;

if(X[0]!=0)

result=0;

else{

result=0;

for(i=0;i<n;i++){

if(X[i]==0)

result=i+1;

else{

result=i;

break;

}

}

}

return result;

}

void main(){

int n;

int i;

double X[100];

cout<<"vvedite 0<n<=100"<<endl; //запрос числа элементов массива

cin>>n; //ввод

while(n>100||n==0||n<0){

cout<<"Error! 0<n<=100"<<endl;

cout<<"vvedite 0<n<=100"<<endl;

cin>>n;} //проверка n<=100 и n=0

cout<<"vvedite massiv X:"<<endl; //запрос и ввод массива

for(i=0;i<n;i++)

cin>>X[i];

cout<<"vvedenniy massiv:"<<endl; //эхо-вывод на экран массива

for(i=0;i<n;i++) // и значения ф-ции

cout<<X[i]<<" ";

cout<<endl;

cout<<"function N="<<N(n,X)<<endl;

ofstream ptk("k106.txt"); //oбъявления потока вывода в файл

if(ptk==0)cout<<"error otkr faila"<<endl; //проверка открытия файла

ptk<<"vvedenniy massiv:"<<endl; //эхо-вывод в файл массива

for(i=0;i<n;i++)

ptk<<X[i]<<" ";

ptk<<endl;

ptk<<"function N="<<N(n,X)<<endl;

getch();

}

Тест: vvedenniy massiv:

1 0 0 0

function N=0

Номер задачи

Входные данные

Выходные данные для С++

Выходные данные для MathCAD

9

Страница 3

Страница 4

Страница 1.1

116 г

Страница 4

Страница 6

Страница 1.2

555

Страница 6

Страница 9

Страница 1.3

684

Страница 9

Страница 12

406*

Страница 13

Страница 16

Список литературы:

  1. Разработка программ на C++ при выполнении курсовых и лабораторных работ (методические указания) Назарова М.В.

  2. Borland C++ Builder. Освой самостоятельно

  3. "Программирование в C++ Builder 6" (с) Архангельский А.Я.