Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <fstream>
- #include <iomanip>
- #include <cmath>
- #include <math.h>
- #include <cstdlib>
- using namespace std;
- double** A;
- double* b;
- unsigned matrix_size;
- int ReadAndWrite();
- void gauss();
- int MENU();
- int main()
- {
- MENU();
- return 0;
- }
- void gauss()
- {
- for(unsigned j=0; j<matrix_size-1; j++)
- {
- for(unsigned i=0; i<matrix_size; i++)
- {
- if(i>j) //wybieranie elementow pod glowna przekatna
- {
- double p=A[i][j]/A[j][j]; //wspolczynniki p
- b[i] = b[i] - p * b[j];
- for(unsigned k=0; k<matrix_size; k++)
- {
- A[i][k] = A[i][k] - p * A[j][k]; //przeksztalcenia
- }
- }
- }
- }
- double suma=0;
- b[matrix_size-1]/= A[matrix_size-1][matrix_size-1]; // obliczanie Xn
- for (int i=matrix_size-2; i>=0; i--)
- {
- suma =0;
- for (int j=i+1; j<=matrix_size-1; j++)
- {
- suma+= b[j] * A[i][j]; // suma w Xk
- }
- b[i] = (b[i] - suma) / A[i][i]; // obliczanie Xk
- }
- cout << endl <<"Wynik:" << endl;
- for(int i=0;i<matrix_size;i++)
- cout <<"x" << i+1 <<"=" << b[i] << endl;
- delete [] A[0];
- delete [] A;
- delete [] b;
- }
- int ReadAndWrite()
- {
- ifstream source_file("dane.csv");
- if (!source_file.is_open())
- {
- cout <<"The file has not been open!"<<endl;
- return -1;
- }
- source_file >> matrix_size;
- A = new double*[matrix_size];
- A[0] = new double[matrix_size*matrix_size];
- for(unsigned i = 1; i< matrix_size; i++)
- A[i] = A[i-1] + matrix_size;
- b = new double[matrix_size];
- char semicolumn;
- for (unsigned i = 0; i < matrix_size+1; i++)
- source_file >> semicolumn;
- for (unsigned i = 0; i < matrix_size; i++)
- {
- for (unsigned j = 0; j < matrix_size; j++)
- {
- source_file >> A[i][j];
- cout << setw(4) << A[i][j];
- source_file >> semicolumn;
- }
- source_file >> semicolumn;
- source_file >> b[i];
- cout << setw(3) << "|" << b[i];
- cout << endl << endl;
- }
- source_file.close();
- }
- int MENU()
- {
- for(;;)
- {
- int p;
- 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:";
- cin >> p;
- switch(p)
- {
- case 1:
- ReadAndWrite();
- break;
- case 2:
- gauss();
- break;
- case 3:
- cout << "Wcisnij dowolny przycisk aby wyjsc" << endl;
- return 0;break;
- default:
- cout <<"Wybor spoza zakresu" << endl;
- break;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement