fork download
  1. #include <iostream>
  2. #include <cmath>
  3. using namespace std;
  4.  
  5. // Funkcja f(x) = sqrt(1 - x^2)
  6. double f(double x)
  7. {
  8. return sqrt(1.0 - x * x);
  9. }
  10.  
  11. int main()
  12. {
  13. int n; // liczba podziałów
  14. double a = -1.0; // początek przedziału
  15. double b = 1.0; // koniec przedziału
  16.  
  17. cout << "Podaj liczbe podzialow n: ";
  18. cin >> n;
  19.  
  20. double h = (b - a) / n;
  21.  
  22. // =============================
  23. // Metoda prostokatow
  24. // =============================
  25. double suma_prost = 0.0;
  26.  
  27. for(int i = 0; i < n; i++)
  28. {
  29. double x = a + i * h; // lewy punkt
  30. suma_prost += f(x);
  31. }
  32.  
  33. double calka_prost = h * suma_prost;
  34. double pi_prost = 2.0 * calka_prost;
  35.  
  36. // =============================
  37. // Metoda trapezow
  38. // =============================
  39. double suma_trap = 0.0;
  40.  
  41. suma_trap = (f(a) + f(b)) / 2.0;
  42.  
  43. for(int i = 1; i < n; i++)
  44. {
  45. double x = a + i * h;
  46. suma_trap += f(x);
  47. }
  48.  
  49. double calka_trap = h * suma_trap;
  50. double pi_trap = 2.0 * calka_trap;
  51.  
  52. // =============================
  53. // Wyniki
  54. // =============================
  55. cout << "\nPrzyblizenie liczby pi:\n";
  56. cout << "Metoda prostokatow: " << pi_prost << endl;
  57. cout << "Metoda trapezow: " << pi_trap << endl;
  58.  
  59. cout << "\nDokladna wartosc (M_PI): " << M_PI << endl;
  60.  
  61. return 0;
  62. }
Success #stdin #stdout 0.01s 5268KB
stdin
Standard input is empty
stdout
Podaj liczbe podzialow n: 
Przyblizenie liczby pi:
Metoda prostokatow: 3.14159
Metoda trapezow:    3.14159

Dokladna wartosc (M_PI): 3.14159