#include #include #include /*Preferisco sempre fissare la taglia massima del problema (in questo caso il # massimo di partire) da precompilatore, in modo che sia */ /*modificabile senza piu' toccare il resto del codice, ma solo la riga successiva */ #define MAXP 10 #define R 1. main(){ int seed,i,j,k,P,score[MAXP][2],win,par,punti[4],indx; double d,x,y,Rc,Rm; /*Molti di voi hanno definito score[P][2], dove P e' il valore inserito dall'utente*/ /*E' errato! Non potete allocare staticamente un array senza che le sue dimensioni */ /*siano note prima dell'esecuzione!*/ /*Veniamo al problema...*/ /* Questa volta il nostro bersaglio e' diviso in tre settori concentrici equispaziati */ /* Ovvero Rc=1./3*R Rm=2./3*R, programmeremo lo stesso algoritmo senza usare l'if o else if */ Rc=R/3; Rm=2.*Rc; /*Ad ogni settore associamo il suo punteggio di riferimento*/ /*Il vettore punti potrebbe essere inizializzato direttamente nella fase di dichiarazione*/ punti[0]=50; punti[1]=20; punti[2]=5; punti[3]=0; do{ printf("Inserisci # partite\n"); scanf("%i",&P); }while(P>MAXP || P<=0); seed=time(0); srand48(seed); win=0; par=0; for(i=0;iR allora varra' 3 */ /*quindi bastera' incrementare il punteggio di punti[indx]*/ score[i][j]+=punti[indx]; } } if (score[i][0]>score[i][1])win++; else if (score[i][0]==score[i][1])par++; } printf("Il giocatore 1 ha vinto %i partite\n",win); printf("Sono state pareggiate %i partite \n",par); /*E' inutile definire la variabile sconfitte, visto che pareggi sconfitte e vittorie non sono tra loro*/ /*indipendenti (Un geometra vi direbbe che sono linearmente dipendenti).*/ /*Possiamo infatti scrivere sconfitte=# totale partite - vittorie - pareggi*/ printf("Il giocatore 2 ha vinto %i partite \n",P-win-par); }