#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);
}
To embed this project on your website, copy the following code and paste it into your website's HTML: