#include <iostream>
#include <cmath>
using namespace std;
// Funkcja podcałkowa
double f(double x) {
return sqrt(1.0 - x * x);
}
// Metoda prostokątów (środków przedziałów)
double metoda_prostokatow(double a, double b, int n) {
double h = (b - a) / n;
double suma = 0.0;
for (int i = 0; i < n; i++) {
double x = a + (i + 0.5) * h; // środek przedziału
suma += f(x);
}
return suma * h;
}
// Metoda trapezów
double metoda_trapezow(double a, double b, int n) {
double h = (b - a) / n;
double suma = 0.5 * (f(a) + f(b));
for (int i = 1; i < n; i++) {
double x = a + i * h;
suma += f(x);
}
return suma * h;
}
int main() {
double a = -1.0;
double b = 1.0;
int n;
cout << "Podaj liczbe podzialow n: ";
cin >> n;
double calka_prostokaty = metoda_prostokatow(a, b, n);
double calka_trapezy = metoda_trapezow(a, b, n);
double pi_prostokaty = 2.0 * calka_prostokaty;
double pi_trapezy = 2.0 * calka_trapezy;
cout << "\nPrzyblizenie liczby pi:" << endl;
cout << "Metoda prostokatow: " << pi_prostokaty << endl;
cout << "Metoda trapezow: " << pi_trapezy << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y21hdGg+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKLy8gRnVua2NqYSBwb2RjYcWCa293YQpkb3VibGUgZihkb3VibGUgeCkgewogICAgcmV0dXJuIHNxcnQoMS4wIC0geCAqIHgpOwp9CgovLyBNZXRvZGEgcHJvc3Rva8SFdMOzdyAoxZtyb2Rrw7N3IHByemVkemlhxYLDs3cpCmRvdWJsZSBtZXRvZGFfcHJvc3Rva2F0b3coZG91YmxlIGEsIGRvdWJsZSBiLCBpbnQgbikgewogICAgZG91YmxlIGggPSAoYiAtIGEpIC8gbjsKICAgIGRvdWJsZSBzdW1hID0gMC4wOwoKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKSB7CiAgICAgICAgZG91YmxlIHggPSBhICsgKGkgKyAwLjUpICogaDsgIC8vIMWbcm9kZWsgcHJ6ZWR6aWHFgnUKICAgICAgICBzdW1hICs9IGYoeCk7CiAgICB9CgogICAgcmV0dXJuIHN1bWEgKiBoOwp9CgovLyBNZXRvZGEgdHJhcGV6w7N3CmRvdWJsZSBtZXRvZGFfdHJhcGV6b3coZG91YmxlIGEsIGRvdWJsZSBiLCBpbnQgbikgewogICAgZG91YmxlIGggPSAoYiAtIGEpIC8gbjsKICAgIGRvdWJsZSBzdW1hID0gMC41ICogKGYoYSkgKyBmKGIpKTsKCiAgICBmb3IgKGludCBpID0gMTsgaSA8IG47IGkrKykgewogICAgICAgIGRvdWJsZSB4ID0gYSArIGkgKiBoOwogICAgICAgIHN1bWEgKz0gZih4KTsKICAgIH0KCiAgICByZXR1cm4gc3VtYSAqIGg7Cn0KCmludCBtYWluKCkgewogICAgZG91YmxlIGEgPSAtMS4wOwogICAgZG91YmxlIGIgPSAxLjA7CiAgICBpbnQgbjsKCiAgICBjb3V0IDw8ICJQb2RhaiBsaWN6YmUgcG9kemlhbG93IG46ICI7CiAgICBjaW4gPj4gbjsKCiAgICBkb3VibGUgY2Fsa2FfcHJvc3Rva2F0eSA9IG1ldG9kYV9wcm9zdG9rYXRvdyhhLCBiLCBuKTsKICAgIGRvdWJsZSBjYWxrYV90cmFwZXp5ID0gbWV0b2RhX3RyYXBlem93KGEsIGIsIG4pOwoKICAgIGRvdWJsZSBwaV9wcm9zdG9rYXR5ID0gMi4wICogY2Fsa2FfcHJvc3Rva2F0eTsKICAgIGRvdWJsZSBwaV90cmFwZXp5ID0gMi4wICogY2Fsa2FfdHJhcGV6eTsKCiAgICBjb3V0IDw8ICJcblByenlibGl6ZW5pZSBsaWN6YnkgcGk6IiA8PCBlbmRsOwogICAgY291dCA8PCAiTWV0b2RhIHByb3N0b2thdG93OiAiIDw8IHBpX3Byb3N0b2thdHkgPDwgZW5kbDsKICAgIGNvdXQgPDwgIk1ldG9kYSB0cmFwZXpvdzogICAgIiA8PCBwaV90cmFwZXp5IDw8IGVuZGw7CgogICAgcmV0dXJuIDA7Cn0=