Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.06.2015, 17:54   #1
Romalikons
Пользователь
 
Регистрация: 03.10.2013
Сообщений: 22
По умолчанию C++ - СЛАУ в обратную сторону

Задание:
Решить СЛАУ исходные данные брать из файла , ответы записать в файл. Произвести проверку A*x=b , где A - исходная матрица , x - решение СЛАУ , b - свободные члены. Проблема в проверке , по сути надо решить СЛАУ , но в обратную сторону , не выходит , буду признателен за помощь. Мой код :
Код:
#include<iostream>
#include <math.h>
#include <windows.h>
#include <stdlib.h>
#include <fstream>
#include<string>
using namespace std;
float xx[100];
float xxx[100][100];
fstream fusl;
fstream fotv;
//Проверка по формуле A*x=b
void test (int n, int m, float **slau_m){
int i=0;
cout <<"Test : "<<endl;
for(int j=0;j<m-1;j++){ 
while(i<n){
    xxx[i][j]=xx[j]*slau_m[i][j];
    i++;
    }
    j++;
}
for (i=0;i<n;i++){
for (int j=0;j<m;j++)
cout <<xxx[i][j]<<" ";
cout<<endl;
}
}
 
//Расчет слау
void slau (int n , int m , float **slau_m){
    int k,i,j,tmp;
    for (i=0; i<n; i++)
     {
       tmp=slau_m[i][i];
         for (j=n;j>=i;j--)
             slau_m[i][j]/=tmp;
           for (j=i+1;j<n;j++)
          {
             tmp=slau_m[j][i];
               for (k=n;k>=i;k--)
             slau_m[j][k]-=tmp*slau_m[i][k];
          }
      }
    xx[n-1] = slau_m[n-1][n];
     for (i=n-2; i>=0; i--)
       {
           xx[i] = slau_m[i][n];
           for (j=i+1;j<n;j++) xx[i]-=slau_m[i][j]*xx[j];
       }
}
 
int main(){
   int i, j;
    fusl.open("file_matr.txt", fstream::in);
    fotv.open("file_xx_matr.txt", fstream::out); 
 
 
   //Загружаем переменные из файла 
   cout << "Kol-vo uravneniy: ";
      char cn[10];
       fusl.getline(cn,100,'\n');
        int n=atoi(cn);
        cout <<n<<endl;
 
 
    cout << "Kol-vo peremennyh: ";
    char cm[10];
      fusl.getline(cm,100,'\n');
     int m=atoi(cm);    
        m+=1;
cout <<m<<endl;
        
       
        
    float **slau_m = new float *[n];
         for (i=0; i<n; i++)
             slau_m[i] = new float [m];
//Создаем матрицу
 
    for (i = 0; i<n; i++)
{
        for (j = 0; j<m; j++)
        {
    cout <<"[" << i+1 << "][" << j+1 << "]: "  ;
    
    char fc[10];
    fusl.getline(fc,10);
    float vOut = (float)strtod(fc,NULL);
    slau_m[i][j]=vOut;
 
    cout << slau_m[i][j]<<endl;
        }
}
 
 
 //Выводим массив
    cout << "slau_m: " << endl;
      for (i=0; i<n; i++)
       {
          for (j=0; j<m; j++)
            cout << slau_m[i][j] << " ";
        cout << endl;
       }
    cout << endl;
    slau(n,m,slau_m);
 
 
//Выводим решение в текстовый файл
     cout <<"xx: "<< endl;
       for (i=0; i<n; i++){
           cout << xx[i] << " ";
        fotv<<xx[i] <<'\n';
   }
       
       cout << endl;
       test(n,m,slau_m);
       cout <<endl;
       
//закрываем текстовый файл
 fusl.close();
 fotv.close();
       
system("pause");
 
   return 0;
}
Romalikons вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Пустить код в обратную сторону Realism_32 Помощь студентам 4 02.12.2013 09:04
как заставить окружность двигаться в обратную сторону? phasha Помощь студентам 8 17.10.2011 18:54
найти обратную матрицу в Си Monomah Помощь студентам 0 26.02.2011 12:03
Foreach в обратную сторону. KobolD Общие вопросы .NET 5 13.11.2010 10:24
Найти обратную матрицу. C# MaD1z Помощь студентам 0 23.12.2009 12:47