PDA

Visualizza la versione completa : [C++] Estrazione (problema ripetizione numeri)


aironenero
25-07-2012, 16:48
#include <cstdlib>
#include <iostream>

using namespace std;


const int max_numeri=5;
const int max_citta=11;
string citta[max_citta]={"Bari","Cagliari","Firenze","Genova","Milano","Napoli","Palermo","Roma","Torino","Venezia","Nazionale"};
int numeri[max_numeri];
int giocoEstrazioni()
{


int numeri;
srand (time(NULL));
for(int j=0; j<max_citta; j++){

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

for(int i=0; i<max_numeri; i++){
numeri=rand()%90+1; //*estrazione del numero;


//*qua ci vorrebbe un controllo ma se metto per esempio un
//con if o altro ma non so come ho già provato per esempio
//ok un if e un break se i numeri erano uguali creando
//anche un array ma niente



cout<<" \t"<<numeri;
}
}
cout<<endl;
}
int main(int argc, char *argv[])
{
int numero;
giocoEstrazioni();

system("PAUSE");
return EXIT_SUCCESS;
}


Ciao a tutti :zizi: questo è un mio piccolo programma per simulare l'estrazioni del lotto
e come potete leggere nei commeti con riesco a mettere un controllo per non fare uscire numeri uguali nella stassa ruota,ho provareto a mettere un if che controllasse che il numero uscito non fosse uguale a un array che avevo creato ma niente da fare...qualcuno sa darmi una mano?..sono alle prime armi quindi m servirebbe qualcosa di non troppo difficile...grazie a tutti :D

ah naturalmente in c++ :)

MItaly
26-07-2012, 19:04
Ho sistemato il codice nei tag [code], aggiunto il linguaggio al titolo della discussione ed eliminato il post ridondante (ti bastava un edit). In futuro ricordati di impostare correttamente la discussione fin da subito.

:ciauz:

giorgio_kollias
27-07-2012, 00:43
#include <cstdlib>
#include <iostream>

#define max_numeri 5
#define max_citta 11

using namespace std;

giocoEstrazioni();

int main(int argc, char *argv[])
{
srand (time(NULL));
giocoEstrazioni();
system("PAUSE");
return EXIT_SUCCESS;
}

int giocoEstrazioni()
{
string citta[max_citta]={"Bari","Cagliari","Firenze","Genova",
"Milano","Napoli","Palermo","Roma","Torino","Venezia","Nazionale"};
int numeri[max_numeri];
for(int j=0; j<max_citta; j++){
cout<<endl<<citta[j]<<" \t";
for(int i=0; i<max_numeri; i++){
randomize:
numeri[i]=rand()%90+1;
for(int k=i-1; k>0; k--)
if(numeri[k]==numeri[i]) goto randomize;
cout<<" \t"<<numeri[i];
}
}
cout<<endl;
}


così dovrebbe andare ^^ (l'ho modificato un po' rendendolo più elegante e leggibile, ma la sostanze è la stessa... Spero non ti dispiaccia).

aironenero
27-07-2012, 11:44
Originariamente inviato da giorgio_kollias


#include <cstdlib>
#include <iostream>

#define max_numeri 5
#define max_citta 11

using namespace std;

giocoEstrazioni();

int main(int argc, char *argv[])
{
srand (time(NULL));
giocoEstrazioni();
system("PAUSE");
return EXIT_SUCCESS;
}

int giocoEstrazioni()
{
string citta[max_citta]={"Bari","Cagliari","Firenze","Genova",
"Milano","Napoli","Palermo","Roma","Torino","Venezia","Nazionale"};
int numeri[max_numeri];
for(int j=0; j<max_citta; j++){
cout<<endl<<citta[j]<<" \t";
for(int i=0; i<max_numeri; i++){
randomize:
numeri[i]=rand()%90+1;
for(int k=i-1; k>0; k--)
if(numeri[k]==numeri[i]) goto randomize;
cout<<" \t"<<numeri[i];
}
}
cout<<endl;
}


così dovrebbe andare ^^ (l'ho modificato un po' rendendolo più elegante e leggibile, ma la sostanze è la stessa... Spero non ti dispiaccia).

Ma va figurati anzi grazie mille! :zizi: comunque sì così è scritto meglio effettivamente,però continua a uscire ogni tanto dei numeri uguali nella stassa ruota come mai?eppure così dovrebbe andare

giorgio_kollias
27-07-2012, 22:07
Originariamente inviato da aironenero
però continua a uscire ogni tanto dei numeri uguali nella stassa ruota come mai?

si, hai ragione, infatti nel ciclo con la variabile k la condizione è k>=0, non k>0 (così non controllava mai il primo numero) sry ^^

Scara95
28-07-2012, 02:20
#include <iostream>
#include <set>
#include <cstdlib>

using namespace std;
int main() {
srand(time(NULL));
set<int> numeri;
while(numeri.size() < 6)
numeri.insert(rand()%90+1);
set<int>::iterator it;
for(it=numeri.begin(); it!=numeri.end(); it++)
cout << *it << " ";
cout << endl;
return 0;
}

Molto più semplice e veloce usando un set...
Scusate la formattazzione ma ho scritto dal telefono, il codice genera solo i 6 numeri di una ruota e li stampa, ma non credo sia impegnativo riadattarlo...

Loading