Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <iomanip>
- #include <fstream>
- #include <cmath>
- #include <conio.h>
- using namespace std;
- const double EPS = 0.0000000001; // dokładność porównania z zerem
- const int MAXEQ = 100; // maksymalna ilość równań w układzie
- bool EliminujX(int n, double AB[][MAXEQ+1])
- {
- int i,j,k;
- double m;
- for(i = 0; i < n - 1; i++)
- {
- if(fabs(AB[i][i]) < EPS) return false;
- for(j = i + 1; j < n; j++)
- {
- m = -AB[j][i] / AB[i][i];
- for(k = i + 1; k <= n; k++) AB[j][k] += m * AB[i][k];
- }
- }
- return true;
- }
- bool ObliczX(int n, double X[], double AB[][MAXEQ+1])
- {
- int i,j;
- double s;
- for(i = n - 1; i >= 0; i--)
- {
- if(fabs(AB[i][i]) < EPS) return false;
- s = AB[i][n];
- for(j = n - 1; j > i; j--) s -= AB[i][j] * X[j];
- X[i] = s / AB[i][i];
- }
- return true;
- }
- int main(int argc, char* argv[])
- {
- ofstream fout;
- int i,j,n,*tab;
- float x,*ai,*xi,*yi;
- double AB[MAXEQ][MAXEQ+1], X[MAXEQ];
- cout.precision(5);
- cout.setf(ios::fixed);
- cout<<"Podaj ile chcesz rownan ";
- cin>>n;
- xi=new float[n];
- yi=new float[n];
- for(i=0;i<n;i++)
- {
- cout<<"podaj wspolczynnik x["<<i<<"]=";
- cin>>xi[i];
- }
- for(i=0;i<n;i++)
- {
- cout<<"podaj wspolczynnik y["<<i<<"]=";
- cin>>yi[i];
- }
- for(i=0;i<n;i++)
- for(j=0;j<n+1;j++)
- {
- AB[i][j]=pow(xi[i],j);
- if(j==n)AB[i][j]=yi[i];
- }
- if(EliminujX(n,AB) && ObliczX(n,X,AB))
- {
- fout.open("e:\\out.txt");
- for(i = 0; i < n; i++)fout << X[i] << endl;
- fout.close();
- }
- else cout << "Rozwiazanie ukladu rownan nie udalo sie\n";
- cout<<X[0]<<" + ";
- for(i=1;i<n;i++)
- {
- cout<<X[i]<<"*x^"<<i<<" + ";
- if(i==n-1)cout<<";";
- }
- cout<<endl<<endl;
- getchar();
- delete [] xi;
- delete [] yi;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement