
- •Содержание
- •Блок-схема для чтения динамической матрицы из файла …….…..22
- •Формулировка задачи № 1
- •Блок-схема для чтения динамической матрицы из файла
- •1.2 Функция для чтения динамической матрицы из файла
- •1.3 Блок-схема для записи динамической матрицы в файл
- •1.4 Функция для записи динамической матрицы в файл
- •1.5 Блок-схема для вывода динамической матрицы на монитор
- •1.6 Функция для вывода динамической матрицы на монитор
- •1.7 Блок- схема для вывода вектора на монитор
- •1.8 Функция для вывода вектора на монитор
- •1.9 Блок-схема для поиска минимальных элементов среди отритцательных элементов строк с четными номерами матрицы a и формирования из них вектора
- •1.10 Функция для поиска минимальных элементов среди отритцательных элементов строк с четными номерами матрицы a и формирования из них вектора
- •1.11 Блок-схема для главной функции
- •1.12 Листинг программы
- •1.13 Результаты вычислений
- •Формулировка задачи № 2
- •2.1 Блок-схема для чтения динамической матрицы из файла
- •Ifstream &f-поток чтения из файла double **a - массив int n-кол-во строк int m- кол-во столбцов char s[40]-массив для имени файла
- •2.2 Функция для чтения динамической матрицы из файла
- •2.3 Блок-схема для записи динамической матрицы в файл
- •2.4 Функция для записи динамической матрицы в файл
- •2.5 Блок-схема для вывода динамической матрицы на монитор
- •2.6 Функция для вывода динамической матрицы на монитор
- •2.7 Блок-схема для поиска первой строки, не содержащей ни одного положительного элемента
- •2.8 Функция для поиска первой строки, не содержащей ни одного положительного элемента
- •2 .9 Блок- схема для перестановки элементов матрицы
- •2.10 Функция для перестановки элементов матрицы
- •2.11 Блок- схема для главной функции
- •2.12 Листинг программы
- •Результаты вычислений
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();
}