Boucle dans un If

Boucle dans un If - C - Programmation

Marsh Posté le 23-04-2010 à 16:26:12    

Bonjour !
 
Je suis a la recherche d'une solution pour faire une boucle dans un if.
Je m'explique :
 
Dans un jeu de carte, j'ai tiré une premiere carte, celle ci se compose comme ceci :
hasard_valeur1  
hasard_couleur1 ( valeur pour la valeur de la carte et couleur pour sa couleur ^^ )
 
Une fois la valeur trouvée au hasard par un random, j'envoi la valeur dans la carte definitive :  
 
carte1.valeur = hasard_valeur1  
carte1.couleur = hasard_couleur1
 
Maintenant, je tire une autre carte,
 
hasard_valeur2 et hasard_couleur2
 
Je voudrai verifier que je n'ai pas un "double" ( deux fois AS de COEUR par exemple ) donc je test avec un if,
 
J'ecris l'algorithme pour tenter d'etre clair :D
 

Code :
  1. Si
  2. hasard_valeur1 = hasard_valeur2 ET hasard_couleur1 = hasard_couleur2
  3. ALORS
  4. refaire un random sur hasard_valeur2 et hasard_couleur2
  5.          et REVENIR AU SI
  6. SINON
  7. carte2.valeur = hasard_valeur2
  8. carte2.couleur = hasard_couleur2


 
 
Je suis donc bloqué pour revenir au SI, je ne vois pas trop comment sortir du SI et revenir dedans en cas de "doublon"
 
J'espere avoir été assez clair =)
 
Merci  
 

Reply

Marsh Posté le 23-04-2010 à 16:26:12   

Reply

Marsh Posté le 23-04-2010 à 16:29:09    

remplace ton si par un tant que  :
 
tant que ma carte n° est identiqueçà la première, je retente ma chance

Reply

Marsh Posté le 23-04-2010 à 19:41:31    

J'ai essayé avec tant que, mais il ne vérifie pas les variables, il exécute malgré les instructions, ou alors, ce qui est plus probable, je ne l'ai pas codé correctement :)

Reply

Marsh Posté le 23-04-2010 à 19:55:43    

Montre ton code et on te dira ce qui cloche.
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 23-04-2010 à 21:13:28    

Code :
  1. int main(int argc, char *argv[])
  2. {
  3.    
  4. // utilisation de srand pour un random different a chaque lancé de jeu
  5. srand(time(NULL));
  6. //Initialisation des valeurs aleatoires pour utilisation durant le jeu
  7. int hasard_valeur1 =0 , hasard_valeur2 =0, hasard_valeur3 =0, hasard_valeur4 =0, hasard_valeur5 =0;
  8. int hasard_couleur1 =0, hasard_couleur2 =0, hasard_couleur3 =0, hasard_couleur4 =0, hasard_couleur5 =0;
  9. //Creation de la structure pour la couleur et valeur des cartes
  10. struct enreg
  11. {
  12. int couleur;
  13. int valeur;
  14. } carte1, carte2, carte3, carte4, carte5;
  15. // tirage 1ere carte
  16. hasard_valeur1 =rand()%(13)+1;
  17. hasard_couleur1 =rand()%(4)+14;
  18. carte1.couleur = hasard_couleur1;
  19. carte1.valeur = hasard_valeur1;
  20. hasard_valeur2 =rand()%(13)+1;
  21. hasard_couleur2 =rand()%(4)+14;
  22. while ( hasard_valeur2 = hasard_valeur1 && hasard_couleur1 = hasard_couleur2 )
  23. {
  24.      
  25. hasard_valeur2 =rand()%(13)+1;
  26. hasard_couleur2 =rand()%(4)+14;
  27.      
  28. }
  29. /* A PLACER :
  30. carte2.couleur = hasard_couleur2;
  31. carte2.valeur = hasard_valeur2; */
  32. system("PAUSE" );
  33.   return 0;
  34. }


 
Mon problème maintenant, c'est que la , ça ne fonctionne pas, j'ai :
ligne 29: invalid lvalue in assignment  
 
La, en corrigeant l'erreur, ça changera la valeur si les 2 hasard_valeur/couleur sont semblables, mais comment faire si les valeur apres le test sont encore sujet au probleme de doublon ?

Reply

Marsh Posté le 23-04-2010 à 21:14:14    

Désolé pour la qualité de code, c'est mon premier vrai programme ( hors cours ) ;)

Reply

Marsh Posté le 23-04-2010 à 21:16:00    

Peut etre qu'un DO WHILE serait plus approprié ?

Reply

Marsh Posté le 23-04-2010 à 23:34:37    

Non non, c'est quasiment bon, juste une petite erreur de syntaxe:
while (hasard_valeur2 = hasard_valeur1 && hasard_couleur1 = hasard_couleur2)
au lieu de  
while (hasard_valeur2 == hasard_valeur1 && hasard_couleur1 == hasard_couleur2)
 
A+,


Message édité par gilou le 23-04-2010 à 23:35:04

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed