Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - far scontrare due squadre in c
Forum - C/C++ - far scontrare due squadre in c

Avatar
xarcius (Normal User)
Newbie


Messaggi: 1
Iscritto: 02/02/2011

Segnala al moderatore
Postato alle 13:10
Lunedì, 21/02/2011
Salve ragazzi,mi chiedevo se potete aiutarmi con questo esercizio (sono ancora un principiante quindi avrò fatto di sicuro qualche errore nel codice sotto)
TESTO:

Si supponga di gestire un torneo di calcio tra 8 squadre. Inizialmente vengono
considerati 88 giocatori identificati dal Cognome e Nome (anche solo lettere casuali). Si
suppone che ogni giocatore possa assumere qualsiasi ruolo in campo. Ad ogni giocatore
viene assegnato un numero casuale nell’intervallo [0,10]. In maniera casuale vengono
create 8 squadre.
Il torneo viene simulato facendo scontrare due squadre alla volta. Ogni squadra vincitrice
si scontrerà con la squadra vincitrice di un’altra partita fino ad arrivare ad una singola
squadra vincitrice.
Una partita viene vinta da una squadra secondo la seguente regola
· la somma dei pesi di una squadra moltiplicata per un numero casuale
nell’intervallo [0, 1] è maggiore della corrispondente operazione sull’altra
squadra
· il processo si ripete finché non si ottiene un vincitore
Simulare 100 volte il torneo e ritornare l’elenco completo delle squadre in ordine
decrescente di vincite. Si stampino i nomi dei giocatori della squadra che ha vinto di più.
L’algoritmo usa la function rand() in stdlib per generare numeri casuali: si ricorda che,
per esempio, se numero_casuale è un int, la chiamata numero_casuale=rand()%11;
genera un numero casuale intero (distribuzione uniforme) nell’insieme
(0,1,2,3,4,5,6,7,8,9,10). Usare sempre la srand() per rendere automatica la scelta iniziale
del seed della sequenza di numeri casuali.



Ho iniziato a scrivere il codice,ma la parte in cui non ho proprio idee è come far scontrare le due squadre,al corso non ho mai sentito parlare di una cosa del genere e su internet non c'è niente che mi possa aiutare

Codice sorgente - presumibilmente C++

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4.  
  5. int main()
  6. {
  7. int i,c,x,y;
  8. srand(time(NULL))
  9. nc=rand ()%11;
  10.         char nome_squadra1[]={"e r","t y","w e","q f","j f","x m","o p","l o","z m","l p","q p"};
  11.         char nome_squadra2[]={"q m","a p","l g","a p","q o","p e","z g","y x","g f","k n","v p"};
  12.         char nome_squadra3[]={"n e","m n","p o","t r","c n","w p","k q","p r","h q","u p","j r"};
  13.         char nome_squadra4[]={"o e","f e","g p","y m","x p","p h","m o","u k","z p","l u","h f"};
  14.         char nome_squadra5[]={"d p","q a","r t","p q","u w","k f","s d","e y","l y","e g","w p"};
  15.         char nome_squadra6[]={"c i","b i","p w","x t","l k","p t","q g","m e","l u","u w","d o"};
  16.         char nome_squadra7[]={"x p","a q","k l","h q","a b","q j","o m","j w","j z","r e","z x"};
  17.         char nome_squadra8[]={"g r","c y","h l","p k","f e","m a","n t","e l","a t","i a","m r"};
  18.  
  19. for (i=1;i<=8;i++)
  20. {
  21. nc = 1+rand()%8
  22. }
  23.  
  24. RIGUARDO ALLO SCONTRO AVEVO PENSATO DI FARE COSì:
  25. if(x*nc=rand()%2 > y*nc=rand()%2)



Più di così non so più come andare avanti :(

Ultima modifica effettuata da Il Totem il 22/02/2011 alle 12:15
PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 12:23
Martedì, 22/02/2011
Per prima cosa, il tuo codice non è coerente col testo. Il testo dice che vengono considerati 88 giocatori con cognome e nome, mentre tu inizializzi già le squadre (per altro potevi usare un array di array e non 8 array). Ogni giocatore dovrebbe essere racchiuso da una struttura, anche perché gli si deve assegnare un numero da 0 a 10 in una squadra.
Il programma deve poi creare le squadre basandosi su questi giocatori, cosa che tu hai omesso.

Venendo al tuo problema... Il testo dice che bisogna calcolare la somma pesata di numeri casuali nell'intervallo [0, 1]. Presumo che il peso sia il numero da 0 a 10 assegnato al giocatore. Calcolare questo valore è banale:
Codice sorgente - presumibilmente C/C++

  1. float somma = 0.0;
  2. int i;
  3. for(i = 0; i < 11; i++)
  4.    somma += (float)(rand() % 1001) / 1000 * i



"Infelici sono quelli che hanno tanto cervello da vedere la loro stupidità."
(Fligende Blatter)

"Dubitare di se stessi è il primo segno d'intelligenza."
(Ugo Ojetti)
PM Quote