#include <math.h>
#include <conio.h>
#include "matrix6.cpp"
TMatrix<double> linearSolveJordan(TMatrix<double> &as,
TMatrix<double> &bs)
{
TMatrix<double> a(as), b(bs);
int n=a.getSizeRow();
double eps=.000001;
for(int k=1; k<=n; k++)
{
double max=0;
int max_i=-1;
for(int i=k; i<=n; i++)
{
if(fabs(a(i,k))>max)
{
max=fabs(a(i,k));
max_i=i;
}
}
if(max_i==-1 || fabs(a(max_i,k))<eps)
{
cout<<"Ошибка: определитель равен нулю"<<endl;
}
else
{
if(max_i!=k)
{
a.swapRow(max_i,k);
b.swapRow(max_i,k);
}
}
double lead=a(k,k);
for(int j=k; j<=n; j++)
{
a(k,j)/=lead;
}
b[k]/=lead;
for(i=1; i<=n; i++)
{
double a_div_lead=a(i,k)/a(k,k);
if(i!=k)
{
for(j=k; j<=n; j++)
{
a(i,j)-=a(k,j)*a_div_lead;
}
b-=b[k]*a_div_lead;
}
}
}
return b;
}
void main(void)
{
char ch;
TMatrix<double> a_b;
cout.setf(ios::showpoint);
for(;;)
{
clrscr();
cout<<"Решение систем линейных алгебраических уравнений"<<endl
<<"Метод Жордана-Гаусса. Выбор ведущего элемента по столбцу"
<<endl<<endl
<<"1 - Ввести данные из файла"<<endl
<<"2 - Решить СЛАУ"<<endl
<<"Esc - Выход"<<endl<<endl<<endl;
do
{
ch=getch();
}
while(ch!='1' && ch!='2' && ch!=27);
switch(ch)
{
case '1':
{
clrscr();
char str[20];
cout<<"Введите имя файла:"<<endl;
cin>>str;
ifstream in_file(str);
if(in_file)
{
int n;
in_file>>n;
a_b.setSize(n,n+1);
a_b.readArray(in_file);
a_b.writeArray(cout);
}
else
{
cout<<"Не могу открыть файл \""<<str<<"\""<<endl;
}
getch();
break;
}
case '2':
{
TMatrix<double> x;
clrscr();
cout<<"Решение СЛАУ"<<endl;
cout<<"Расширенная матрица системы:"<<endl;
a_b.writeArray(cout);
int n=a_b.getSizeRow();
TMatrix<double> a(a_b.getPart(1,1,n,n)), b(a_b.getCol(n+1));
x=linearSolveJordan(a,b);
cout<<"Решение: "<<endl;
x.writeArray(cout);
ofstream out_file("result.txt");
if(out_file)
{
out_file<<"Решение СЛАУ"<<endl;
out_file<<"Расширенная матрица системы:"<<endl;
a_b.writeArray(out_file);
out_file<<"Решение: "<<endl;
x.writeArray(out_file);
}
else
{
cout<<"Не могу создать файл \"result.txt\""<<endl;
}
getch();
break;
}
case 27:
{
return;
}
}
}
}
Блок-схема
Помогите составить блок-схему: