Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdlib.h>
- #include <stdio.h>
- #include <math.h>
- void distance( int, double, double, double[] );
- void max_min( int, double[] );
- void distance( int i, double XTarta, double XLepre, double Distacchi[] ){
- Distacchi[i]=fabs(XTarta-XLepre);
- }
- void max_min( int Ngare, double Distacchi[] ){
- int i, gara_max, gara_min;
- double max=0, min=600;
- for(i=0; i<Ngare; i++){
- if(max<Distacchi[i]){
- max=Distacchi[i];
- gara_max=i;
- }
- if(min>Distacchi[i]){
- min=Distacchi[i];
- gara_min=i;
- }
- }
- printf("Il distacco maggiore si è avuto nella gara numero %i ed è stato di %lf.\n", gara_max, max);
- printf("\n");
- printf("Il distacco minore si è avuto nella gara numero %i ed è stato di %lf\n", gara_min, min);
- printf("\n");
- }
- main(){
- int Ngare, i, j=0, prob, Lvittoria=0, Tvittoria=0, Pareggi=0, Ronf, c, k;
- double Maxsalto, Traguardo, Distacchi[100], XTarta, XLepre, Ruga, E, X;
- srand48(time(0));
- printf("Il programma simula l'andamento di alcune gare a cui parteciperanno una lepre ed una tartaruga. \nPer fare questo ho bisogno che tu inserisca il numero di gare che queste dovranno svolgere, compreso tra 1 e 100.\nNgare = ");
- scanf("%d", &Ngare);
- while(Ngare<1 || Ngare>100){
- printf("Il numero inserito è errato! Reinseriscilo!\nNgare = ");
- scanf("%d", &Ngare);
- }
- printf("Adesso devo conoscere meglio uno dei due concorrenti, la lepre. Quanto può saltare lontano? Il numero che inserisci deve essere compreso tra 3 e 6.\nMaxsalto = ");
- scanf("%lf", &Maxsalto);
- while(Maxsalto<3. || Maxsalto>6.){
- printf("Il numero inserito è errato! Reinseriscilo!\nMaxsalto = ");
- scanf("%lf", &Maxsalto);
- }
- printf("Ora inserisci la lunghezza del tragitto compresa tra 100 e %lf.\nTraguardo = ", 100*Maxsalto);
- scanf("%lf", &Traguardo);
- while(Traguardo<100 || Traguardo>100*Maxsalto){
- printf("Il numero inserito è errato! Reinseriscilo!\nTraguardo = ");
- scanf("%lf", &Traguardo);
- }
- Ruga=Maxsalto/3.;
- for(i=0; i<Ngare; i++){
- XTarta=0;
- XLepre=0;
- X=0;
- k=0;
- Ronf=0;
- while( X<Traguardo ){
- XTarta+=Ruga;
- if(j%10==0){
- prob=lrand48()%2;
- if(prob==0){
- XLepre+=(((double)lrand48()+1)/RAND_MAX)*Maxsalto;
- }
- else{
- Ronf=lrand48()%10+1;
- k=2;}
- }
- else{
- if(k<Ronf){
- k++;
- }
- else{ XLepre+=(((double)lrand48()+1)/RAND_MAX)*Maxsalto; }
- }
- if(XLepre>XTarta){
- X=XLepre;
- }
- else{ X=XTarta; }
- j++;
- }
- distance( i, XTarta, XLepre, Distacchi );
- if(XTarta>XLepre){
- printf("Ha vinto la gara numero %i la Tartaruga con un distacco di %lf sulla Lepre!\n", i, Distacchi[i]);
- Tvittoria++;
- }
- else{ printf("Ha vinto la gara numero %i la Lepre con un distacco di %lf sulla Tartaruga!\n", i, Distacchi[i]);
- Lvittoria++;
- }
- if(XTarta==XLepre){
- printf("I due corridori hanno pareggiato nella gara numero %i!\n", i);
- Pareggi++;
- }
- }
- printf("\n");
- max_min( Ngare, Distacchi );
- printf("La Lepre ha vinto %i volte.\n", Lvittoria);
- printf("La Tartaruga ha vinto %i volte.\n", Tvittoria);
- printf("Ci sono stati %i pareggi.\n", Pareggi);
- }
Advertisement
Add Comment
Please, Sign In to add comment