Discussione: domanda su un comando
View Single Post
Old 13-07-2012, 17:40   #4
demos88
Senior Member
 
Iscritto dal: Nov 2004
Città: Padova
Messaggi: 2342
Sono un po' arruginito di c/c++.
Comunque una cosa molto semplice del genere, dichiarando un array di interi di lunghezza max_numeri (sia per esempio numeri[], che ho visto dichiari all'inizio ma non mi pare che usi...) e cambiando il nome della variabile int numeri in int numero (cattiva abitudine dare nomi uguali a variabili che funzionano in modo diverso, array e primitivo in questo caso) e sostituendo queste righe:
Codice:
for(int i=0; i<max_numeri; i++){
   numeri=rand()%90+1;
   cout<<" \t"<<numeri;
}
con
Codice:
//azzero l'array, 0 non può uscire quindi va bene per quello che fai dopo
for (int j=0; j<max_numeri; j++)
   numeri[j]=0;

for(int i=0, int j=0; i<max_numeri; i++){
   numero=rand()%90+1;
   
   //controllo che non sia già stato estratto
   for (j=0; j<max_numeri; j++)
      if (numeri[j] == numero)
          break;   //esce dal ciclo di controllo perchè trova un doppione, j avrà un valore inferiore a max_numeri
   if (j<max_numeri)  //trovato un doppione
      continue; //non stamparlo a video, estraine un altro
   cout<<" \t"<<numero;
}
non l'ho compilato, ho cambiato il nome di una variabile per non fare confusione. I commenti dovrebbero essere esplicativi.
__________________
CPU Ryzen 2600 @ 3,95Ghz + Bequiet Dark Rock TF / MB Asus X470-F Gaming / RAM 2x8GB DDR4 G.Skill FlareX 3200 CL14 / VGA Sapphire RX 7900 XT Nitro+ @ 3200Mhz / SSD Samsung 970 Pro 512GB + Sandisk 240GB Plus + Sandisk 960GB Ultra II PSU Seasonic Platinum P-660 / Headset Kingston HyperX Flight
demos88 è offline   Rispondi citando il messaggio o parte di esso