#include <iostream>
#include <cmath>
using namespace std;
// funkcja półokręgu
double f(double x) {
return sqrt(1 - x * x);
}
int main() {
int n = 100000; // liczba podziałów
double a = -1.0;
double b = 1.0;
double h = (b - a) / n;
// --- METODA PROSTOKĄTÓW ---
double suma_rect = 0.0;
for(int i = 0; i < n; i++) {
double x = a + i * h;
suma_rect += f(x);
}
double pi_rect = 2 * h * suma_rect;
// --- METODA TRAPEZÓW ---
double suma_trap = 0.5 * (f(a) + f(b));
for(int i = 1; i < n; i++) {
double x = a + i * h;
suma_trap += f(x);
}
double pi_trap = 2 * h * suma_trap;
// Wyniki
cout << "Metoda prostokatow: " << pi_rect << endl;
cout << "Metoda trapezow: " << pi_trap << endl;
cout << "Wartosc M_PI: " << M_PI << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y21hdGg+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKLy8gZnVua2NqYSBww7PFgm9rcsSZZ3UKZG91YmxlIGYoZG91YmxlIHgpIHsKICAgIHJldHVybiBzcXJ0KDEgLSB4ICogeCk7Cn0KCmludCBtYWluKCkgewogICAgaW50IG4gPSAxMDAwMDA7ICAgLy8gbGljemJhIHBvZHppYcWCw7N3CiAgICBkb3VibGUgYSA9IC0xLjA7CiAgICBkb3VibGUgYiA9IDEuMDsKICAgIGRvdWJsZSBoID0gKGIgLSBhKSAvIG47CgogICAgLy8gLS0tIE1FVE9EQSBQUk9TVE9LxIRUw5NXIC0tLQogICAgZG91YmxlIHN1bWFfcmVjdCA9IDAuMDsKICAgIGZvcihpbnQgaSA9IDA7IGkgPCBuOyBpKyspIHsKICAgICAgICBkb3VibGUgeCA9IGEgKyBpICogaDsKICAgICAgICBzdW1hX3JlY3QgKz0gZih4KTsKICAgIH0KICAgIGRvdWJsZSBwaV9yZWN0ID0gMiAqIGggKiBzdW1hX3JlY3Q7CgoKICAgIC8vIC0tLSBNRVRPREEgVFJBUEVaw5NXIC0tLQogICAgZG91YmxlIHN1bWFfdHJhcCA9IDAuNSAqIChmKGEpICsgZihiKSk7CiAgICBmb3IoaW50IGkgPSAxOyBpIDwgbjsgaSsrKSB7CiAgICAgICAgZG91YmxlIHggPSBhICsgaSAqIGg7CiAgICAgICAgc3VtYV90cmFwICs9IGYoeCk7CiAgICB9CiAgICBkb3VibGUgcGlfdHJhcCA9IDIgKiBoICogc3VtYV90cmFwOwoKICAgIC8vIFd5bmlraQogICAgY291dCA8PCAiTWV0b2RhIHByb3N0b2thdG93OiAiIDw8IHBpX3JlY3QgPDwgZW5kbDsKICAgIGNvdXQgPDwgIk1ldG9kYSB0cmFwZXpvdzogICAgIiA8PCBwaV90cmFwIDw8IGVuZGw7CiAgICBjb3V0IDw8ICJXYXJ0b3NjIE1fUEk6ICAgICAgICIgPDwgTV9QSSA8PCBlbmRsOwoKICAgIHJldHVybiAwOwp9