Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Kursovaya_po_EVM (2).docx
Скачиваний:
2
Добавлен:
01.03.2025
Размер:
83.29 Кб
Скачать

1.6 Функция для вывода динамической матрицы на монитор

void outputm(double** a, int n,int m)

{//Объявление переменных

int i,j;

//Вывод

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

{for(j=0;j<m;j++)

cout<<setw(10)<<a[i][j];

cout<<endl;

}

}

1.7 Блок- схема для вывода вектора на монитор

Входные параметры:

double *a

int n

i=0

Вывод a[i]

i++

i<n

Да

Нет

1.8 Функция для вывода вектора на монитор

void output (double *a, int n)

{int i;

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

{if(i%7==0) cout<<endl;

cout<<setw(10)<<a[i];

}

}

1.9 Блок-схема для поиска минимальных элементов среди отритцательных элементов строк с четными номерами матрицы a и формирования из них вектора

Входные параметры:

double** a - массив

int n-кол-во строк

int m- кол-во столбцов

Выходной параметр

double* -b вектор

Выделение ОП под вектор

i=0

j=0

b[i]=a[i][0]

a[i][j]<b[i]

нет

да

b[i]=a[i][j]

j++

j<m

да

нет

i=i+2

i<n

да

нет

return b

1.10 Функция для поиска минимальных элементов среди отритцательных элементов строк с четными номерами матрицы a и формирования из них вектора

double* fvm(double** a,int n,int m)

{int i,j;

double* b;

b=new double [m];

if(b==NULL){cout<<"\n Не хватает ОП";

exit(1);

}

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

for(j=0;j<m;j++)

{b[i]=a[i][0];

if(a[i][j]<b[i])

b[i]=a[i][j];

}

return b;

}

1.11 Блок-схема для главной функции

double **a – Матрица А

double *r- Вектор

ifstream f-поток чтения из файла

ofstream f1, f2 -потоки записи в файл

int n=5;

int m=5;

char str[40],str2[40], str3[40]- массивы для имени файла

Ввод имени файла для чтения

a=inputmf(f,n,m,str)

outputm(a,n,m)

Ввод имени файла для записи

outputmf(f1,a,n,m,str2)

r=fvm(a,n,m);

outputv(r, n)

Ввод имени файла для записи

outputvf(f2,r,n,str3)

1.12 Листинг программы

#include <iostream>

#include <iomanip>

#include <fstream>

#include <cstdlib>

#include <cstddef>

using namespace std;

//прототип для чтения матрицы из файла

double ** inputmf(ifstream &f,int n, int m, char s[40]);

//прототип для записи матрицы в файл

void outputmf(ofstream &f,double **a, int n, int m, char s[40]);

//прототип для вывода матрицы

void outputm(double **a, int n, int m);

//Прототип для поиска минимальных элементов среди отритцательных

//элементов строк с четными номерами матрицы A и формирования из них вектора

double* fvm(double** a,int n,int m);

//Прототип для вывода вектора на монитор

void outputv(double *a,int n);

//Прототип для записи вектора в файл

//Главная функция

void outputvf(ofstream &f,double *a, int m, char s[40]);

void main()

{setlocale (LC_ALL,"Russian");

double **a;

double* r;

ifstream f;

ofstream f1,f2;

int n=5,m=5;

char str[40],str2[40],str3[40];

cout<<"\n Ввести имя файла для чтения матрицы: \n";

cin>>str;

a=inputmf(f,n,m,str);

outputm(a,n,m);

cout<<"\n Введите имя файла для записи матрицы:\n";

cin>>str2;

outputmf(f1,a,n,m,str2);

cout<<"\n Вектор из минимальных отритцательных элементов: \n";

r=fvm(a,n,m);

outputv(r,n);

cout<<"\n Введите имя файла для записи вектора:\n";

cin>>str3;

outputvf(f2,r,n,str3);

cout<<endl;

}

//Функция для чтения матрицы из файла

double ** inputmf(ifstream &f,int n, int m, char s[40])

{int i,j;

double **a;

a=new double *[n];

if(a==NULL){cout<<"\n Не хватает оперативной памяти под строки";

exit(1);

}

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

{a[i]=new double[m];

if(a[i]==NULL){cout<<"\n Не хватает оперативнйо памяти под столбцы";

exit(1);

}

}

f.open (s);

if (f.fail()) {cout<<"\n Ошибка открытия файла";

exit(1);

}

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

{for(j=0;j<m;j++)

f>>a[i][j];

}

f.close();

return a;

}

//Функция для записи матрицы в файл

void outputmf(ofstream &f,double **a, int n, int m, char s[40])

{int i,j;

f.open(s);

if (f.fail()) {cout<<"\n Ошибка открытия файла";

exit(1);

}

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

{f<<endl;

for(j=0;j<m;j++)

f<<setw(10)<<a[i][j];

}

f.close();

}

//функция для вывода матрицы

void outputm(double **a, int n, int m)

{int i,j;

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

{cout<<endl;

for(j=0;j<m;j++)

cout<<setw(10)<<a[i][j];

}

}

//Функциядля поиска минимальных элементов среди отритцательных

//элементов строк с четными номерами матрицы A и формирования из них вектора

double* fvm(double** a,int n,int m)

{int i,j;

double* b;

b=new double [n];

if(b==NULL){cout<<"\n Не хватает ОП";

exit(1);

}

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

for(j=0;j<m;j++)

{b[i]=a[i][0];

if(a[i][j]<b[i])

b[i]=a[i][j];

}

return b;

}

//Функция для вывода вектора на монитор

void outputv(double *a,int n)

{int i;

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

{if(i%7==0) cout<<endl;

cout<<setw(10)<<a[i];

}

}

//Функция для записи вектора в файл

void outputvf(ofstream &f, double *a, int n, char s[40])

{int i;

f.open(s);

if (f.fail()) {cout<<"\n Ошибка открытия файла";

exit(1);

}

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

{f<<endl;

f<<setw(10)<<a[i];

}

f.close();

}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]