Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <math.h>
- #define pi 3.141592654
- #define m 9.806
- void g_k( double[], double );
- double percentuale( double[], double, double);
- void g_k( double gk[], double s ){
- int i;
- double p1, p2, g1;
- gk[0]=s;
- for(i=1; i<101; i++){
- p1=((double)lrand48()+1.)/(RAND_MAX+2.);
- p2=((double)lrand48()+1.)/(RAND_MAX+2.);
- gk[i]=(sqrt(-2*log(p1)*fabs(sin(2*pi*p2))))*s+m;
- }
- }
- double percentuale( double gk[], double s1, double s2 ){
- int i;
- double j=0., x, y;
- if(s1>=s2){
- y=s1;
- x=s2;
- }
- else{
- y=s2;
- x=s1;
- }
- for(i=1; i<101; i++){
- if(gk[i]>=(m+x) && gk[i]<=(m+y)){
- j++;
- }
- }
- return j/100.;
- }
- main(){
- int i;
- double s, s1, s2, gk[101]={0}, percent;
- FILE *fp;
- srand48(time(0));
- printf("Il programma simula la misurazione dell'accelerazione di gravità g assumendo che la misura segua la probabilità gaussiana, e chiamando con m la media e con s la varianza.\n");
- printf("Inserisci quindi la deviazione standard che deve essere compresa tra 0 e 1. \ns = ");
- scanf("%lf", &s);
- while(s<=0 || s>=1){
- printf("Il valore immesso è errato! Reinseriscilo. \ns = ");
- scanf("%lf", &s);
- }
- if((fp=fopen("g.dat", "w"))==NULL){
- printf("Errore nell'apertura del file g.dat.\n");
- exit(EXIT_FAILURE);
- }
- g_k( gk, s );
- for(i=1; i<101; i++){
- fprintf(fp, "%d - %lf\n", i, gk[i]);
- }
- printf("Inserisci ora due numeri s1 e s2 compresi tra 0 e 1.\ns1 = ");
- scanf("%lf", &s1);
- while(s1<=0 || s1>=1){
- printf("Il valore immesso è errato! Reinseriscilo. \ns1 = ");
- scanf("%lf", &s1);
- }
- printf("s2 = ");
- scanf("%lf", &s2);
- while(s2<=0 || s2>=1){
- printf("Il valore immesso è errato! Reinseriscilo. \ns2 = ");
- scanf("%lf", &s2);
- }
- percent=percentuale( gk, s1, s2 );
- printf("La percentuale di misure comprese tra 9.806 + %lf e 9.806 + %lf è di :\n %lf \n", s1, s2, percent);
- }
Advertisement
Add Comment
Please, Sign In to add comment