Advertisement
theadamix

projekt

Jan 28th, 2020
417
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.99 KB | None | 0 0
  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. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement