fork download
  1. #include <iostream>
  2. #include <cmath>
  3.  
  4. using namespace std;
  5.  
  6. // Funkcja f(x) = sqrt(1 - x^2)
  7. double f(double x) {
  8. return sqrt(1.0 - x * x);
  9. }
  10.  
  11. int main() {
  12. int n;
  13. cout << "Podaj liczbe podprzedzialow: ";
  14. cin >> n;
  15.  
  16. double a = -1.0;
  17. double b = 1.0;
  18. double h = (b - a) / n;
  19.  
  20. // ------------------------
  21. // Metoda prostokatow (srodkow)
  22. // ------------------------
  23. double suma_prostokaty = 0.0;
  24.  
  25. for(int i = 0; i < n; i++) {
  26. double x = a + (i + 0.5) * h; // srodek przedzialu
  27. suma_prostokaty += f(x);
  28. }
  29.  
  30. double calka_prostokaty = suma_prostokaty * h;
  31. double pi_prostokaty = 2.0 * calka_prostokaty;
  32.  
  33. // ------------------------
  34. // Metoda trapezow
  35. // ------------------------
  36. double suma_trapezy = 0.5 * (f(a) + f(b));
  37.  
  38. for(int i = 1; i < n; i++) {
  39. double x = a + i * h;
  40. suma_trapezy += f(x);
  41. }
  42.  
  43. double calka_trapezy = suma_trapezy * h;
  44. double pi_trapezy = 2.0 * calka_trapezy;
  45.  
  46. // Wyniki
  47. cout << "\nPrzyblizenie liczby pi:" << endl;
  48. cout << "Metoda prostokatow: " << pi_prostokaty << endl;
  49. cout << "Metoda trapezow: " << pi_trapezy << endl;
  50. cout << "Wartosc z biblioteki: " << M_PI << endl;
  51.  
  52. return 0;
  53. }
  54.  
Success #stdin #stdout 0.01s 5328KB
stdin
Standard input is empty
stdout
Podaj liczbe podprzedzialow: 
Przyblizenie liczby pi:
Metoda prostokatow: 3.14159
Metoda trapezow:    3.14159
Wartosc z biblioteki: 3.14159