fork download
  1. #include <iostream>
  2. #include <cmath>
  3.  
  4. using namespace std;
  5.  
  6. // Funkcja podcałkowa
  7. double f(double x) {
  8. return sqrt(1.0 - x * x);
  9. }
  10.  
  11. // Metoda prostokątów (środków przedziałów)
  12. double metoda_prostokatow(double a, double b, int n) {
  13. double h = (b - a) / n;
  14. double suma = 0.0;
  15.  
  16. for (int i = 0; i < n; i++) {
  17. double x = a + (i + 0.5) * h; // środek przedziału
  18. suma += f(x);
  19. }
  20.  
  21. return suma * h;
  22. }
  23.  
  24. // Metoda trapezów
  25. double metoda_trapezow(double a, double b, int n) {
  26. double h = (b - a) / n;
  27. double suma = 0.5 * (f(a) + f(b));
  28.  
  29. for (int i = 1; i < n; i++) {
  30. double x = a + i * h;
  31. suma += f(x);
  32. }
  33.  
  34. return suma * h;
  35. }
  36.  
  37. int main() {
  38. double a = -1.0;
  39. double b = 1.0;
  40. int n;
  41.  
  42. cout << "Podaj liczbe podzialow n: ";
  43. cin >> n;
  44.  
  45. double calka_prostokaty = metoda_prostokatow(a, b, n);
  46. double calka_trapezy = metoda_trapezow(a, b, n);
  47.  
  48. double pi_prostokaty = 2.0 * calka_prostokaty;
  49. double pi_trapezy = 2.0 * calka_trapezy;
  50.  
  51. cout << "\nPrzyblizenie liczby pi:" << endl;
  52. cout << "Metoda prostokatow: " << pi_prostokaty << endl;
  53. cout << "Metoda trapezow: " << pi_trapezy << endl;
  54.  
  55. return 0;
  56. }
Success #stdin #stdout 0.01s 5288KB
stdin
Standard input is empty
stdout
Podaj liczbe podzialow n: 
Przyblizenie liczby pi:
Metoda prostokatow: 3.14159
Metoda trapezow:    3.14159