Oppure

Loading
15/08/09 17:15
tommyprojects
Per adesso sono riuscito a generare TOT combinazioni nel range stabilito ma senza questo importantissimo controllo... sulle eventuali presenze multiple...


Qualcuno/a mi può suggerire come fare? Grazie


  finale=fine-(inizio+1); 
  
  string combinazioneintera;
  
  if (numeri!=0) {  
          
          cout << "\n"; 
          cout << "Numeri:";
          cout << "\n\n";
          for (k=0;k<combinazioni;k++) {
          
          for (z=0;z<numeri;z++) {
          
          numero = rand() % finale  + inizio;
 
          cout << numero << ","; 
          //cout << "\n"; 
          
          string numero3;
          numero3 = intToString(numero);
          
          combinazioneintera+=numero3;
          combinazioneintera+=",";  
                   
         
          }


Ora come ora le combinazioni generate possono essere qualcosa di questo tipo...
1,34,1,78,45,90,35,1,32,67 il carattere 1 è stato generato per 3 volte...
mentre la stessa comb dopo la modifica richiesta dovrebbe diventare:
34,1,2,78,45,90,35,11,33,67 ovvero avere tutti e 10 i valori diversi...


Grazie anticipate! :k:
Ultima modifica effettuata da tommyprojects 15/08/09 17:17
aaa
15/08/09 20:24
manvb.net
Crea un array di bool(inizializzato a false) e quando esce un numero setti a true l'elemento che ha l'inidice num. Cosi, ad ogni estrazione del numero, controlli che il corrispondente elemento non sia true.

Una cosa del genere:
bcontrollo[numero] = true;


E nella verifica:
if (bcontrollo[numero]==ture){
return 0; //Esci, in qualsiasi modo.
}
aaa
16/08/09 8:43
tommyprojects
Per adesso sono arrivato fin qui...

        


numero = rand() % finale  + inizio; 
          
//prova controllo x evitare ripetizioni...
           
//AGGIUNTA A VECTOR combinazione... del primo elemento sicurmante non doppione
combinazione.push_back(numero);
//----------------------------------
           
cout << "\nNUMERO GENERATO TEMPORANEO: ";
cout << numero;
           
//SE IL NUMERO GENERATO E' GIA' PRESENTE IN VECTOR combinazione NON VA INSERITO...

//Ma per quanto riguarda questo pezzo... non riesco ad ottenere il controllo
//desiderato... ho provato con il tuo consiglio... ho provato con if...
//(numero==combinazione[i]) allora non inserire... ecc... ma nulla... :(           
           
//--------------------------------------------------------------------------------
           
cout << "\nPress ENTER to continue...\n" << endl; 
cin.get();
           
cout << "CONTENUTO COMBINAZIONE TEMPORANEO:\n ";
for (i=0;i<combinazione.size();i++) {
cout << combinazione[i];
cout << "-";
}
           
cout << "\nPress ENTER to continue...\n" << endl; 
cin.get();
           


Grazie
Ultima modifica effettuata da tommyprojects 16/08/09 8:46
aaa
16/08/09 12:04
manvb.net
Ovvio che non funzioni, non puoi usare un vector con push_back perchè così aggiungi un valore, ma non all'indice desiderato. Ti conviene usare un array dinamico di boolean e il numero estratto come indice, come ti ho consigliato prima.
aaa
16/08/09 16:34
tommyprojects
Postato originariamente da manvb.net:

Ovvio che non funzioni, non puoi usare un vector con push_back perchè così aggiungi un valore, ma non all'indice desiderato. Ti conviene usare un array dinamico di boolean e il numero estratto come indice, come ti ho consigliato prima.


Mi potresti postare il codice relativo a questo tuo tipo di controllo applicato che so ad una generazione di una combinazione di 10 numeri casuali tutti univoci? Perchè ho provato e riprovato a metterlo nel mio cod realizzato finora ma nulla... :noway:

tnx
aaa