Probleme pour une boucle en C++

Résolu
Liquid043 Messages postés 2 Date d'inscription jeudi 24 novembre 2005 Statut Membre Dernière intervention 30 novembre 2005 - 30 nov. 2005 à 19:43
Liquid043 Messages postés 2 Date d'inscription jeudi 24 novembre 2005 Statut Membre Dernière intervention 30 novembre 2005 - 30 nov. 2005 à 21:56
De facon simple ce que j'essaie de faire c'est de générer 6 nombre
aléatoire compris entre 1 et 49 tout en evitant que dans une
série deux numéros se répète, finalement je evux les placer dans un
tableau afin de générer une combinaison de lotterie.

Pour le moment mon programme va comme suit :



#include
#include <time.h>
#include <stdlib.h>

main()
{
srand(time(NULL));
int TAB[5];

for (int i = 0; i < 6; i++)
{
int n = (rand()%49) +1;
if (i 0) TAB[0] n;
if (i !=0)
{
int trouve = 1;
for (int j = 0; j < i; j++)
{ if (n TAB[j]) trouve 0;
}
if (trouver 1) TAB[i] n;
if (trouve == 0) i--;
}
cout << TAB[i] << endl;
}
}



Le probleme c'est que pour le moment et pour des raison que j'ignore il
m'affcihe constamment des combinaisons avec deux chiffres identiques et
que parfois la combinaison est de plus de 6 chiffres. De plus je me
demandais comment on fait pour vider les espace mémoire d'un tableau
pour par exemple réinitialiser les combinaison sans pour autant
redémarrer le programme. Je suis conscient que ces questions sont tres
basique mais je commence et pour le moment ca me casse la tete.



Merci

6 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
30 nov. 2005 à 20:07
int TAB[5];
int n, j;
int i = 1;
srand(time(NULL));
TAB[0] = rand() % 49 + 1;
do {
netNbr:
n = rand() % 49 + 1; for(j 0; j < i; j++) if(TAB[j] n) goto netNbr;
TAB[i++] = n;
} while(i < 5);

ciao...
http://dev.winsysdev.com
BruNews, MVP VC++
3
rrk275 Messages postés 540 Date d'inscription vendredi 25 juin 2004 Statut Membre Dernière intervention 1 octobre 2007 2
30 nov. 2005 à 21:27
pour

while(i < 5);
je mettrais i<6...mais sinon c'est tout
rrk275
3
rrk275 Messages postés 540 Date d'inscription vendredi 25 juin 2004 Statut Membre Dernière intervention 1 octobre 2007 2
30 nov. 2005 à 21:37
je suis d'accord; il faut augmenter alors la taille du tableau car 4+1==5 et il veut 6 nombres aleatoires...

rrk275
3
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
30 nov. 2005 à 21:34
Si dans la boucle:
i = 4
....
// TAB[i++] = n;
// devient décomposé
TAB[i] = n; // TAB[4] = n;
i++; // i = 5

Si on continue 1 passe de plus on écrase du code, TAB[4] est le MAXI.

ciao...
http://dev.winsysdev.com
BruNews, MVP VC++
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
30 nov. 2005 à 21:44
ah oui, j'en avais oublié l'énoncé initial.
Notre ami Liquid043 doit arriver de VB ou quelque scripterie de ce genre.
int TAB[6];
pour 6 valeurs et on accède de TAB[0] à TAB[max - 1].

ciao...
http://dev.winsysdev.com
BruNews, MVP VC++
0
Liquid043 Messages postés 2 Date d'inscription jeudi 24 novembre 2005 Statut Membre Dernière intervention 30 novembre 2005
30 nov. 2005 à 21:56
merci a tous tout marche tres bien maintenant

je vous en suis hautement reconnaissant.
0
Rejoignez-nous