Advertisement
Guest User

Untitled

a guest
Jan 19th, 2018
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.68 KB | None | 0 0
  1.  
  2. #include <iostream>
  3. #include <iomanip>
  4. #include <fstream>
  5. #include <cmath>
  6. #include <conio.h>
  7.  
  8. using namespace std;
  9.  
  10. const double EPS = 0.0000000001; // dokładność porównania z zerem
  11. const int MAXEQ = 100; // maksymalna ilość równań w układzie
  12.  
  13. bool EliminujX(int n, double AB[][MAXEQ+1])
  14. {
  15. int i,j,k;
  16. double m;
  17.  
  18. for(i = 0; i < n - 1; i++)
  19. {
  20. if(fabs(AB[i][i]) < EPS) return false;
  21. for(j = i + 1; j < n; j++)
  22. {
  23. m = -AB[j][i] / AB[i][i];
  24. for(k = i + 1; k <= n; k++) AB[j][k] += m * AB[i][k];
  25. }
  26. }
  27. return true;
  28. }
  29.  
  30. bool ObliczX(int n, double X[], double AB[][MAXEQ+1])
  31. {
  32. int i,j;
  33. double s;
  34.  
  35. for(i = n - 1; i >= 0; i--)
  36. {
  37. if(fabs(AB[i][i]) < EPS) return false;
  38. s = AB[i][n];
  39. for(j = n - 1; j > i; j--) s -= AB[i][j] * X[j];
  40. X[i] = s / AB[i][i];
  41. }
  42. return true;
  43. }
  44.  
  45. int main(int argc, char* argv[])
  46. {
  47. ofstream fout;
  48. int i,j,n,*tab;
  49. float x,*ai,*xi,*yi;
  50. double AB[MAXEQ][MAXEQ+1], X[MAXEQ];
  51.  
  52. cout.precision(5);
  53.  
  54. cout.setf(ios::fixed);
  55.  
  56.  
  57. cout<<"Podaj ile chcesz rownan ";
  58. cin>>n;
  59. xi=new float[n];
  60. yi=new float[n];
  61. for(i=0;i<n;i++)
  62. {
  63.     cout<<"podaj wspolczynnik x["<<i<<"]=";
  64.     cin>>xi[i];
  65. }
  66. for(i=0;i<n;i++)
  67. {
  68.     cout<<"podaj wspolczynnik y["<<i<<"]=";
  69.     cin>>yi[i];
  70. }
  71. for(i=0;i<n;i++)
  72. for(j=0;j<n+1;j++)
  73. {
  74.     AB[i][j]=pow(xi[i],j);
  75.     if(j==n)AB[i][j]=yi[i];
  76. }
  77.     if(EliminujX(n,AB) && ObliczX(n,X,AB))
  78. {
  79. fout.open("e:\\out.txt");
  80. for(i = 0; i < n; i++)fout << X[i] << endl;
  81.     fout.close();
  82. }
  83. else cout << "Rozwiazanie ukladu rownan nie udalo sie\n";
  84. cout<<X[0]<<" + ";
  85. for(i=1;i<n;i++)
  86. {
  87.     cout<<X[i]<<"*x^"<<i<<" + ";
  88.     if(i==n-1)cout<<";";
  89. }
  90. cout<<endl<<endl;
  91. getchar();
  92. delete [] xi;
  93. delete [] yi;
  94. return 0;
  95. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement