Zadatak „Jedno parče pi-te”

Section author: Petar Marić <petarmaric@uns.ac.rs>

Učitati broj članova reda (n) a zatim odrediti približnu vrednost pi primenom sledeće matematičke formule:

\[\frac{\pi^2}{8} \approx \sum_{i=1}^n \frac{1}{(2i-1)^2} = \frac{1}{1^2} + \frac{1}{3^2} + \frac{1}{5^2} + \cdots + \frac{1}{(2n-1)^2}\]

Ograničenja:

  • sprovesti zaštitu unosa nad podatkom n
  • sve realne promenljive trebaju biti tipa double
  • ne koristiti promenljive tipa niz

Za sledeće ulazne podatke:

Unesite broj clanova reda: 5

očekivani izlaz je u sledećem formatu:

clan[i=1] = 1.000000
clan[i=2] = 0.111111
clan[i=3] = 0.040000
clan[i=4] = 0.020408
clan[i=5] = 0.012346

sum = 1.183865

pi = 3.077486

Primer rešenja

#include <stdio.h>
#include <math.h>

int main() {
    int n;

    do {
        printf("Unesite broj clanova reda: ");
        scanf("%d", &n);
    } while(n<1);

    int i, j;
    double brojilac, imenilac, clan;
    double sum = 0;
    for(i=1; i<=n; i++) {
        brojilac = 1;

        imenilac = pow(2*i - 1, 2);

        clan = brojilac/imenilac;
        printf("clan[i=%d] = %lf\n", i, clan);

        sum += clan;
    }

    printf("\nsum = %lf\n", sum);

    double pi = sqrt(sum * 8);
    printf("\npi = %lf\n", pi);

    return 0;
}