Hinamarth

Cannon

Feb 24th, 2012
52
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.62 KB | None | 0 0
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3. #include <math.h>
  4.  
  5. void location( int[]);
  6.  
  7. int media(int[], double, int);
  8.  
  9. void location(int posizione[]){
  10.   int x, i, j, Ntree;
  11.   Ntree=lrand48()%5+3;
  12.   posizione[0]=1;
  13.   for(j=0; j<25; j++){
  14.     posizione[j]=0;
  15.   }
  16.   for(i=0; i<(Ntree-1); i++){
  17.     x=lrand48()%24+1;
  18.     while(posizione[x]==1){
  19.       x=lrand48()%24+1;
  20.     }
  21.     posizione[x]=1;
  22.   }
  23. }
  24.  
  25. int media(int range[], double medie, int Np){
  26.   int i;
  27.   for(i=0; i<50; i++){
  28.     medie+=range[i];
  29.   }
  30.   return (medie/(double)Np);
  31. }
  32.  
  33.  
  34. main(){
  35.   int Np, i, j, gmax, Xp, Ntree, posizione[25]={0}, range[50]={0};
  36.   double medie=0;
  37.   srand48(time(0));
  38.   printf("Il programma descrive il moto di una palla di cannone indirizzata dentro un bosco e con una gittata massima di 100 metri. Se il proiettile colpisce un albero la sua gittata diminuisce di 10 metri.\n");
  39.   printf("Prima di tutto mi dovresti dire quanti colpi vuoi far sparare dal cannone ( il numero deve essere maggiore o uguale a 10 e minore o uguale a 50 ). \n Np = ");
  40.   scanf("%d", &Np);
  41.   while(Np<10 || Np>50){
  42.     printf("Il numero è errato! Reinseriscilo. \nNp = ");
  43.     scanf("%d", &Np);
  44.   }
  45.   for(i=0; i<Np; i++){
  46.     Xp=lrand48()%25;
  47.     gmax=100;    
  48.     for(j=1; j<21; j++){
  49.       location(posizione);
  50.       if(posizione[Xp]==1){
  51.     gmax-=15;
  52.     if(gmax>=0){
  53.       range[i]=j*5;
  54.     }
  55.       }
  56.       else{
  57.     gmax-=5;
  58.     if(gmax>=0){
  59.       range[i]=j*5;
  60.     }
  61.       }
  62.     }
  63.     printf("Gittata palla numero %d: %d \n", i, range[i]);
  64.     printf("\n");
  65.   }
  66.   medie=media( range, medie, Np );
  67.   printf("La media delle gittate è %lf.\n", medie);
  68. }
Advertisement
Add Comment
Please, Sign In to add comment