Facebook
From Commodious Flamingo, 5 Years ago, written in Plain Text.
Embed
Download Paste or View Raw
Hits: 214
  1. #include <iostream>
  2. #include <fstream>
  3.  
  4. using namespace std;
  5. void FinalSolve(double **BaseMatrix,double *X,int length)
  6. {
  7.     for(int w=length-1;w>=0;w--)
  8.     {
  9.         for(int j=w+1;j<length;j++)
  10.             X[w]=X[w]-X[j]*BaseMatrix[w][j];
  11.         X[w]/=BaseMatrix[w][w];
  12.     }
  13.    for(int i=0;i<length;i++)
  14.                 cout<<"zmienna nr "<<i+1<<" wynosi: "<<X[i]<<"n";
  15.     system("pause");
  16. }
  17.  
  18. void bezwyboru(unsigned rozmiarmacierzy, double**A, double*b)
  19. {
  20.     double* p;
  21.     double* x;
  22.     p = new double[rozmiarmacierzy];
  23.     x= new double[rozmiarmacierzy];
  24.  
  25.     for(int zmienna=0; zmienna < rozmiarmacierzy-1; zmienna++)
  26.     {
  27.         for(int i=zmienna; i<rozmiarmacierzy; i++)
  28.             p[i]=A[i][zmienna]/A[zmienna][zmienna];
  29.  
  30.         for(int j=zmienna+1; j<rozmiarmacierzy; j++)
  31.         {
  32.             for(int k=zmienna; k < rozmiarmacierzy; k++)
  33.             {
  34.                 A[j][k]=A[j][k]-p[j]*A[zmienna][k];
  35.             }
  36.  
  37.             b[j]=b[j]-p[j]*b[zmienna];
  38.         }
  39.     }
  40.  
  41.    FinalSolve(A,b,rozmiarmacierzy);
  42.     for(int i=0; i<rozmiarmacierzy; i++)
  43.             {
  44.                 for(int j=0; j<rozmiarmacierzy; j++)
  45.                 {
  46.                     cout <<"t"<< A[i][j];
  47.                 }
  48.                 cout<<endl;
  49.             }
  50. }
  51.  
  52.  
  53.  
  54.  
  55.  
  56.  
  57.  
  58. int main()
  59. {
  60.     unsigned rozmiarmacierzy;
  61.     double** A;
  62.     double* b;
  63.     double* x;
  64.  
  65.     while(true)
  66.     {
  67.         int wybor;
  68.         cout << "nMENU:" <<endl;
  69.         cout <<"1 - wczytanie danych" << endl;
  70.         cout <<"2 - metoda eliminacji Gaussa bez wyboru elementu"<< endl;
  71.         cout <<"3 - metoda eliminacji Gaussa z wyborem elementu w wierszach"<<endl;
  72.         cout <<"4 - metoda eliminacji Gaussa z wyborem elementu w kolumnach"<<endl;
  73.         cout <<"5 - metoda eliminacji Gaussa z pelnym wyborem elementu"<< endl;
  74.         cout <<"6 - wyjscie z programu"<<endl;
  75.  
  76.         cin>>wybor;
  77.  
  78.         switch(wybor)
  79.         {
  80.         case 1:
  81.         {
  82.             ifstream plik_zrodlowy("6.csv");
  83.             if (!plik_zrodlowy.is_open())
  84.             {
  85.                 cout <<"Plik nie zosstal otwarty!"<<endl;
  86.                 return -1;
  87.             }
  88.  
  89.             plik_zrodlowy >> rozmiarmacierzy;
  90.  
  91.             A = new double*[rozmiarmacierzy];
  92.  
  93.             A[0] = new double[rozmiarmacierzy*rozmiarmacierzy];
  94.  
  95.             for(unsigned i = 1; i< rozmiarmacierzy; i++)
  96.                 A[i] = A[i-1] + rozmiarmacierzy;
  97.  
  98.             b = new double[rozmiarmacierzy];
  99.  
  100.             char pol_kolumny;
  101.  
  102.             for (unsigned i = 0; i < rozmiarmacierzy+1; i++)
  103.                 plik_zrodlowy >> pol_kolumny;
  104.  
  105.             for (unsigned i = 0; i < rozmiarmacierzy; i++)
  106.             {
  107.                 for (unsigned j = 0; j < rozmiarmacierzy; j++)
  108.                 {
  109.                     plik_zrodlowy >> A[i][j];
  110.                     plik_zrodlowy >> pol_kolumny;
  111.                 }
  112.                 plik_zrodlowy >> pol_kolumny;
  113.                 plik_zrodlowy >> b[i];
  114.             }
  115.             plik_zrodlowy.close();
  116.  
  117.             cout << "nPobrano dane"<<endl;
  118.             for(int i=0; i<rozmiarmacierzy; i++)
  119.             {
  120.                 for(int j=0; j<rozmiarmacierzy; j++)
  121.                 {
  122.                     cout <<"t"<< A[i][j];
  123.                 }
  124.                 cout<<endl;
  125.             }
  126.             cout << rozmiarmacierzy<<endl;
  127.  
  128.             break;
  129.         }
  130.  
  131.         case 2:
  132.  
  133.             bezwyboru(rozmiarmacierzy,A,b);
  134.             break;
  135.         case 3:
  136.         {
  137.  
  138.  
  139.         }
  140.  
  141.         break;
  142.  
  143.         case 4:
  144.             break;
  145.         case 5:
  146.             break;
  147.         case 6:
  148.             return 0;
  149.  
  150.         }
  151.     }
  152. }
  153.