fork download
  1. #include <iostream>
  2. #include <cmath>
  3.  
  4. using namespace std;
  5.  
  6. // Definicja funkcji
  7. double f(double x) {
  8. return sqrt(1.0 - x * x);
  9. }
  10.  
  11. // Metoda prostokątów (środkowa)
  12. double metodaProstokatow(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; // punkt środkowy
  18. suma += f(x);
  19. }
  20.  
  21. return suma * h;
  22. }
  23.  
  24. // Metoda trapezów
  25. double metodaTrapezow(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 podprzedzialow: ";
  43. cin >> n;
  44.  
  45. double wynikProstokaty = 2.0 * metodaProstokatow(a, b, n);
  46. double wynikTrapezy = 2.0 * metodaTrapezow(a, b, n);
  47.  
  48. cout << "\nPrzyblizenie liczby pi:\n";
  49. cout << "Metoda prostokatow: " << wynikProstokaty << endl;
  50. cout << "Metoda trapezow: " << wynikTrapezy << endl;
  51.  
  52. return 0;
  53. }
Success #stdin #stdout 0.01s 5320KB
stdin
Standard input is empty
stdout
Podaj liczbe podprzedzialow: 
Przyblizenie liczby pi:
Metoda prostokatow: 3.14159
Metoda trapezow:    3.14159