Discussione: domanda su un comando
View Single Post
Old 14-07-2012, 11:55   #12
starfred
Senior Member
 
Iscritto dal: Jul 2011
Messaggi: 381
Ciao, a mio avviso il codice è un po' bruttino...
Partiamo dall'inizio:

Codice:
int numeri[max_numeri];
Non è utilizzata e crea solo confusione dato che poi dichiari la funzione giocoEstrazioni con all'interno la variabile

Codice:
int numeri;
Altra cosa:

Codice:
int giocoEstrazioni(int numero)
Viene chiamata dal main con

Codice:
int numero;
giocoEstrazioni(numero);
Tuttavia la variabile "numero" non è inizializzata, fortunatamente non viene usata all'interno della funzione giocoEstrazioni, tuttavia potrebbe portare a problemi.
Quindi il mio consiglio è quello di utilizzare l'opzione -Wall quando compili.

Passiamo ora al problema da te esposto ovvero i numeri doppi sulla stessa ruota.

Riprendendo la tua funzione io farei una cosa così:


Codice:
....
map<int,int> numeri;
map<int,int>::iterator it;
....

int giocoEstrazioni(int numero)
{
int estratto;
srand (time(NULL));
for(int j=0; j<max_citta; j++){
numeri.clear();

cout<<endl<<citta[j]<<" \t";

for(int i=0; i<max_numeri; i++){
estratto=rand()%90+1;

it=numeri.find(estratto);

if (it==numeri.end())
cout<<" \t"<<estratto;
else
i--;
}

}
cout<<endl;
}
Ovviamente avendo prima "ripulito" il codice come ti ho esposto prima.

E' abbastanza semplice concettualmente, sicuramente non è il massimo dell'efficienza
Ciao
__________________
Concluso positivamente con: Kamzata, Ducati82, Arus, TheLastRemnant, ghost driver, alexbull1, DanieleRC5, XatiX
starfred è offline   Rispondi citando il messaggio o parte di esso