Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Блок-схема

25K
22 марта 2007 года
CmeXXX
2 / / 19.03.2007
Помогите составить блок-схему:

Код:
#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;
     }
}
}
}
!![/COLOR]
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог