Probleme pour une boucle en C++ [Résolu]

Signaler
Messages postés
2
Date d'inscription
jeudi 24 novembre 2005
Statut
Membre
Dernière intervention
30 novembre 2005
-
Messages postés
2
Date d'inscription
jeudi 24 novembre 2005
Statut
Membre
Dernière intervention
30 novembre 2005
-
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

Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
27
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++
Messages postés
540
Date d'inscription
vendredi 25 juin 2004
Statut
Membre
Dernière intervention
1 octobre 2007
2
pour

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

rrk275
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
27
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++
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
27
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++
Messages postés
2
Date d'inscription
jeudi 24 novembre 2005
Statut
Membre
Dernière intervention
30 novembre 2005

merci a tous tout marche tres bien maintenant

je vous en suis hautement reconnaissant.