SHARE
TWEET

projekt

theadamix Jan 28th, 2020 69 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <iostream>
  2. #include <fstream>
  3. #include <iomanip>
  4. #include <cmath>
  5. #include <math.h>
  6. #include <cstdlib>
  7.  
  8. using namespace std;
  9.  
  10.     double**  A;
  11.     double* b;
  12.     unsigned matrix_size;
  13.  
  14. int ReadAndWrite();
  15. void gauss();
  16. int MENU();
  17.  
  18. int main()
  19. {
  20.     MENU();
  21.     return 0;
  22. }
  23.  
  24. void gauss()
  25. {
  26.     for(unsigned j=0; j<matrix_size-1; j++)
  27.     {
  28.         for(unsigned i=0; i<matrix_size; i++)
  29.         {
  30.             if(i>j)    //wybieranie elementow pod glowna przekatna
  31.             {
  32.                 double p=A[i][j]/A[j][j];    //wspolczynniki p
  33.                 b[i] = b[i] - p * b[j];
  34.                 for(unsigned k=0; k<matrix_size; k++)
  35.                 {
  36.                     A[i][k] = A[i][k] - p * A[j][k];    //przeksztalcenia
  37.                 }
  38.             }
  39.         }
  40.     }
  41.     double suma=0;
  42.  
  43.     b[matrix_size-1]/= A[matrix_size-1][matrix_size-1];         // obliczanie Xn
  44.     for (int i=matrix_size-2; i>=0; i--)
  45.     {
  46.         suma =0;
  47.         for (int j=i+1; j<=matrix_size-1; j++)
  48.         {
  49.             suma+= b[j] * A[i][j];      // suma w Xk
  50.         }
  51.         b[i] = (b[i] - suma) / A[i][i];   // obliczanie Xk
  52.     }
  53.         cout << endl <<"Wynik:" << endl;
  54.         for(int i=0;i<matrix_size;i++)
  55.             cout <<"x" << i+1 <<"=" << b[i] << endl;
  56.         delete [] A[0];
  57.         delete [] A;
  58.         delete [] b;
  59. }
  60.  
  61.  
  62. int ReadAndWrite()
  63. {
  64.  
  65.     ifstream source_file("dane.csv");
  66.     if (!source_file.is_open())
  67.     {
  68.         cout <<"The file has not been open!"<<endl;
  69.         return -1;
  70.  
  71.     }
  72.     source_file >> matrix_size;
  73.     A = new double*[matrix_size];
  74.     A[0] = new double[matrix_size*matrix_size];
  75.     for(unsigned i = 1; i< matrix_size; i++)
  76.         A[i] = A[i-1] + matrix_size;
  77.     b = new double[matrix_size];
  78.     char semicolumn;
  79.     for (unsigned i = 0; i < matrix_size+1; i++)
  80.         source_file >> semicolumn;
  81.  
  82.     for (unsigned i = 0; i < matrix_size; i++)
  83.     {
  84.         for (unsigned j = 0; j < matrix_size; j++)
  85.         {
  86.             source_file >> A[i][j];
  87.             cout << setw(4) << A[i][j];
  88.             source_file >> semicolumn;
  89.         }
  90.         source_file >> semicolumn;
  91.         source_file >> b[i];
  92.         cout << setw(3) << "|" << b[i];
  93.         cout << endl << endl;
  94.     }
  95.     source_file.close();
  96. }
  97.  
  98. int MENU()
  99. {
  100.     for(;;)
  101.         {
  102.         int p;
  103.         cout <<string( 15, ' ' ) << "MENU" << endl << "1.Wczytanie danych z pliku" << endl << "2.metoda eliminacji Gaussa bez wyboru elementu" << endl << "3.Wyjscie z programu" << endl << "Wybor:";
  104.         cin >> p;
  105.         switch(p)
  106.             {
  107.             case 1:
  108.                 ReadAndWrite();
  109.                 break;
  110.             case 2:
  111.                 gauss();
  112.                 break;
  113.             case 3:
  114.                 cout << "Wcisnij dowolny przycisk aby wyjsc" << endl;
  115.                 return 0;break;
  116.             default:
  117.                 cout <<"Wybor spoza zakresu" << endl;
  118.                 break;
  119.             }
  120.         }
  121. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
Top