
- •Содержание
- •Блок-схема для чтения динамической матрицы из файла …….…..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 Листинг программы
- •Результаты вычислений
2.10 Функция для перестановки элементов матрицы
void diag(double** a,int n)
{int i,j,k=0,z=n*n;
double* p,l;
p=new double [z];
if(p==NULL){cout<<"\n Не хватает оперативнйо памяти";
exit(1);
}
for(i=0;i<n;i++)
{for(j=0;j<n;j++)
{p[k]=a[i][j];
k++;
}
}
for(k=0;k<z-1;k++)
{for(j=k+1;j<z;j++)
{if(p[k]<p[j]){l=p[k];
p[k]=p[j];
p[j]=l;
}
}
}
for(i=0;i<n;i++)
a[i][i]=p[i];
}
2.11 Блок- схема для главной функции
double **a – Матрица А
ifstream f-поток чтения из файла
ofstream f1 -поток записи в файл
int n=5;
char str[40],str2[40]- массивы для имени файла
Ввод имени файла для чтения
a=inputmf(f,n,str)
outputm(a,n)
Ввод имени файла для записи
outputmf(f1,a,n,str2)
z=otr(a,n)
diag(a,n)
outputm(a,n)
Ввод имени файла для записи
outputmf(f1,a,n,str2)
2.12 Листинг программы
#include <iostream>
#include <iomanip>
#include <fstream>
#include <cstdlib>
#include <cstddef>
using namespace std;
//Прототип функции для чтения матрицы из файла
double ** inputmf(ifstream &f,int n, char s[40]);
//Прототип функции для записи матрицы в файл
void outputmf(ofstream &f,double **a, int n, char s[40]);
//Прототип функции для вывода матрицы на монитор
void outputm(double **a, int n);
//Прототип функции для преобразования матрицы
void diag(double** a,int n);
//Прототип функции для поиска первой строки, не содержащей ни одного положительного элемента
int otr(double** a,int n);
void main()
{setlocale (LC_ALL,"Russian");
double **a;
ifstream f;
ofstream f1;
int n=5,z;
char str[40],str2[40];
cout<<"\n Ввести имя файла для чтения: \n";
cin>>str;
a=inputmf(f,n,str);
outputm(a,n);
cout<<"\n Введите имя файла для записи матрицы:\n";
cin>>str2;
outputmf(f1,a,n,str2);
z=otr(a,n);
diag(a,n);
cout<<"\n Измененная матрица= \n";
outputm(a,n);
cout<<"\n Введите имя файла для записи измененной матрицы:\n";
cin>>str2;
outputmf(f1,a,n,str2);
cout<<endl;
}
double** inputmf(ifstream &f,int n, 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[n];
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<n;j++)
f>>a[i][j];
}
f.close();
return a;
}
void outputmf(ofstream &f,double **a, int n, 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<n;j++)
f<<setw(10)<<a[i][j];
}
f.close();
}
void outputm(double **a, int n)
{int i,j;
for(i=0;i<n;i++)
{cout<<endl;
for(j=0;j<n;j++)
cout<<setw(10)<<a[i][j];
}
}
void diag(double** a,int n)
{int i,j,k=0,z=n*n;
double* p,l;
p=new double [z];
if(p==NULL){cout<<"\n Не хватает оперативнйо памяти";
exit(1);
}
for(i=0;i<n;i++)
{for(j=0;j<n;j++)
{p[k]=a[i][j];
k++;
}
}
for(k=0;k<z-1;k++)
{for(j=k+1;j<z;j++)
{if(p[k]<p[j]){l=p[k];
p[k]=p[j];
p[j]=l;
}
}
}
for(i=0;i<n;i++)
a[i][i]=p[i];
}
int otr(double** a,int n)
{int i,j,o=0;
for (i=0;i<n;i++)
{for(j=0;j<n;j++)
{if (a[i][j]>=0) break;
if (j==n-1){cout<<"\n Первая строка, все элементы которой отритцательны: "<<i<<"\n";
goto o;
}
}
}
cout<<"\n Строки со всеми отритцательными элементами нет\n";
o:return i;
}