Se connecter avec
S'enregistrer | Connectez-vous

algo mastermind

Dernière réponse : dans Programmation

bonjour voici un "algo" sur la première partie de mon mastermind, dites moi ce que vous en pensez.

tant que ((rep:='O') et (e<=5))
pour i:=1 à 4 faire
tb_secret:=random(9);
fin pour;

pour i1:= 1 to 4 faire
tb_essai[i1]:=0;
fin pour;

pour i1:= 1 to 4 faire
écrire ('Essai ',e,' :');
demander (tb_essai[i1]);
fin pour;

si (tb_essai[i1]=tb_secret) alors
B:=B+1;
fin si;
si (tb_essai[i1]=tb_secret[j]) alors
M:=M+1;
fin si;

gain:=(10*B)+M;
écrire(gain);

pour i1:=1 to 4 faire si (B<M) alors
sc:=0;
fin si;
si (B=M) alors
sc:=2;
fin si;
si (B>M) alors;
sc:=5;
fin si;
fin pour;
écrire(sc);

Autres pages sur : algo mastermind

Lassé par la pub ? Créez un compte

Il doit manquer une boule "pour" ici sinon je vois pas d'ou vienne les variables "i" 1 et "i"
Citation :

si (tb_essai[i1]=tb_secret) alors
B:=B+1;
fin si;
si (tb_essai[i1]=tb_secret[j]) alors
M:=M+1;
fin si;


Mais je suis pas sur que ca marche cet Algoritme

Je connais pas le pascal mais ça donne à peu pres ça:

  1. correct:=false;
  2. nbEssaie: = 0;
  3. tant que ((!correct) ou (essaie<=5))
  4.  
  5. pour i:=1 à 4 faire
  6. tb_secret[i]:=random(9);
  7. fin pour;
  8.  
  9. afficher('Essai', nbEssaie, ':');
  10. pour i:= 1 to 4 faire
  11. tb_essai[i]= chiffre entre au clavier;
  12. fin pour;
  13.  
  14. B:=0;(bon chiffre bonne endroit)
  15. M:=0;(bon chiffre mauvais endroit)
  16.  
  17. pour i:=1 à 4 faire
  18. si (tb_essai[i]=tb_secret[i]) alors
  19. B=B+1;
  20. sinon
  21. pour j:=1 à 4 faire
  22. si (tb_essai[i]=tb_secret[j]) alors
  23. M:=M+1;
  24. fin si;
  25. fin pour;
  26. fin si;
  27. fin pour;
  28.  
  29. si (B=4) alors
  30. afficher('vous avez gagné');
  31. correct=true;
  32. sinon
  33. afficher('il y a ',B,' chiffre correct et placer juste et ',M,' chiffre correct placer faut');
  34. nbEssaie = nbEssaie + 1;
  35. fin si;
  36. fin tant que;

tb_secret[j] c'est pour un nouveau tableau.
le tableau c'est "tb_secret" et le "j" il vient du " pour j:=1 à 4 faire"

en fait il y a des boucle "pour" l'une dans l'autre.

Mais je vais regarder ce que ca donne en pascal parce que j'aime vraiment pas écrir avec ces "pour", "si", "tant que", ...

Ca doit être environ ca mais j'ai jamais fait de pascal alors il y a surement 2-3 erreurs de sythaxe
  1. BEGIN
  2. While (!correct || nbEssaie<=5)
  3. BEGIN
  4. For i:= 1 To 4 Do
  5. BEGIN
  6. tb_secret[i]:=random(9);
  7. END;
  8.  
  9. writeln('Essai', nbEssaie, ':');
  10.  
  11. For i:= 1 To 4 Do
  12. BEGIN
  13. readln(tb_essaie[i]);
  14. END;
  15. B:=0;
  16. M:=0;
  17. For i:= 1 To 4 Do
  18. BEGIN
  19. If (tb_essai[i] = tb_secret[i]) Then
  20. BEGIN
  21. B:=B+1;
  22. END;
  23. Else
  24. BEGIN
  25. For j:= 1 To 4 Do
  26. BEGIN
  27. If(tb_essai[i] = tb_secret[j]) Then
  28. BEGIN
  29. M:=M+1;
  30. END;
  31. END;
  32. END;
  33. END;
  34. If(B=4) Then
  35. BEGIN
  36. writeln('vous avez gagné!!!');
  37. correct:=true;
  38. END;
  39. Else
  40. BEGIN
  41. writeln('il y a ',B,' chiffre correct et placé juste et ',M,' chiffre correct placer faux');
  42. nbEssaie:= nbEssaie + 1;
  43. END;
  44. END;
  45. END;
Lassé par la pub ? Créez un compte
Tom's guide dans le monde