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

// numero casuale reale nell'intervallo reale [0,1]
double dadoR() {
    return rand() / (double) RAND_MAX;
}

// distanza di (x,y) da (x0,y0)
double norma(double x0, double y0, double x, double y) {
    return sqrt(pow(x-x0, 2.0) + pow(y-y0, 2.0));
}

// vera sse (x,y) è all'interno del cerchio di raggio r centrato in (r,r)
int cerchio(double x, double y, double r) {
    if ( norma(r,r,x,y) <= r ) {
        return 1; // vero che la distanza di (x,y) da (r,r) è <= r
    } else {
        return 0; // falso altrimenti
    }
}

void main() {
    double x,y,r;
    int i, 
    successo = 0, // Numero di successi, ovvero (x,y) dentro al cerchio
    N = 100000000; // Numero totale di tentativi

    srand(time(NULL));
    r = 0.5;
    for (i=1;i<=N;i++) {
        //printf("%d --------------- \n",i);
        x = dadoR();
        y = dadoR();
        if ( cerchio(x,y,r) ) {
            successo += 1;
            // printf("(%.2f,%.2f) è all'interno del cerchio di raggio %.2f\n", x,y,r);
        }
        // printf("Distanza da (r,r) = %f\n", norma(x,y,r,r) );
    }
    printf("pi greco approssimato %f\n", 4 * successo/(double)N);

}

Embed on website

To embed this project on your website, copy the following code and paste it into your website's HTML: