- #include <iostream>
- #include <fstream>
- using namespace std;
- void FinalSolve(double **BaseMatrix,double *X,int length)
- {
- for(int w=length-1;w>=0;w--)
- {
- for(int j=w+1;j<length;j++)
- X[w]=X[w]-X[j]*BaseMatrix[w][j];
- X[w]/=BaseMatrix[w][w];
- }
- for(int i=0;i<length;i++)
- cout<<"zmienna nr "<<i+1<<" wynosi: "<<X[i]<<"n";
- system("pause");
- }
- void bezwyboru(unsigned rozmiarmacierzy, double**A, double*b)
- {
- double* p;
- double* x;
- p = new double[rozmiarmacierzy];
- x= new double[rozmiarmacierzy];
- for(int zmienna=0; zmienna < rozmiarmacierzy-1; zmienna++)
- {
- for(int i=zmienna; i<rozmiarmacierzy; i++)
- p[i]=A[i][zmienna]/A[zmienna][zmienna];
- for(int j=zmienna+1; j<rozmiarmacierzy; j++)
- {
- for(int k=zmienna; k < rozmiarmacierzy; k++)
- {
- A[j][k]=A[j][k]-p[j]*A[zmienna][k];
- }
- b[j]=b[j]-p[j]*b[zmienna];
- }
- }
- FinalSolve(A,b,rozmiarmacierzy);
- for(int i=0; i<rozmiarmacierzy; i++)
- {
- for(int j=0; j<rozmiarmacierzy; j++)
- {
- cout <<"t"<< A[i][j];
- }
- cout<<endl;
- }
- }
- int main()
- {
- unsigned rozmiarmacierzy;
- double** A;
- double* b;
- double* x;
- while(true)
- {
- int wybor;
- cout << "nMENU:" <<endl;
- cout <<"1 - wczytanie danych" << endl;
- cout <<"2 - metoda eliminacji Gaussa bez wyboru elementu"<< endl;
- cout <<"3 - metoda eliminacji Gaussa z wyborem elementu w wierszach"<<endl;
- cout <<"4 - metoda eliminacji Gaussa z wyborem elementu w kolumnach"<<endl;
- cout <<"5 - metoda eliminacji Gaussa z pelnym wyborem elementu"<< endl;
- cout <<"6 - wyjscie z programu"<<endl;
- cin>>wybor;
- switch(wybor)
- {
- case 1:
- {
- ifstream plik_zrodlowy("6.csv");
- if (!plik_zrodlowy.is_open())
- {
- cout <<"Plik nie zosstal otwarty!"<<endl;
- return -1;
- }
- plik_zrodlowy >> rozmiarmacierzy;
- A = new double*[rozmiarmacierzy];
- A[0] = new double[rozmiarmacierzy*rozmiarmacierzy];
- for(unsigned i = 1; i< rozmiarmacierzy; i++)
- A[i] = A[i-1] + rozmiarmacierzy;
- b = new double[rozmiarmacierzy];
- char pol_kolumny;
- for (unsigned i = 0; i < rozmiarmacierzy+1; i++)
- plik_zrodlowy >> pol_kolumny;
- for (unsigned i = 0; i < rozmiarmacierzy; i++)
- {
- for (unsigned j = 0; j < rozmiarmacierzy; j++)
- {
- plik_zrodlowy >> A[i][j];
- plik_zrodlowy >> pol_kolumny;
- }
- plik_zrodlowy >> pol_kolumny;
- plik_zrodlowy >> b[i];
- }
- plik_zrodlowy.close();
- cout << "nPobrano dane"<<endl;
- for(int i=0; i<rozmiarmacierzy; i++)
- {
- for(int j=0; j<rozmiarmacierzy; j++)
- {
- cout <<"t"<< A[i][j];
- }
- cout<<endl;
- }
- cout << rozmiarmacierzy<<endl;
- break;
- }
- case 2:
- bezwyboru(rozmiarmacierzy,A,b);
- break;
- case 3:
- {
- }
- break;
- case 4:
- break;
- case 5:
- break;
- case 6:
- return 0;
- }
- }
- }