Bonjour,
voilà l'enoncé d'un exercice d'algorithmique :
Un jeu consiste à deviner un nombre entier compris entre 0 et 100. Pour cela, on a droit à dix essais. A chaque essai, celui qui a choisi le nombre répond "Plus" ou "Moins"jusqu'à ce que le joueur devine la bonne réponse, auquel cas il répond "Trouvé"
Ecrire un algorithme qui joue à ce jeu. Cet algorithme devra afficher à la fin de la partie le nombre d'essais.
L'exercice corrigé est le suivant :
Variables
a,b,n : entiers
Initialisation
a initialisé à nombre entier aléatoire entre 0 et 1oo #nombre à deviner#
b initialisé à 0 #nombre tenté pat l'utilisateur#
n initialisé à 0 #numéro de l'essai#
Traitement
Répéter
Saisir b
Si b est strictement inférieur à a alors afficher "Plus"
Si b est strictement superieur à a alors afficher "Moins"
n prend la valeur n+1 #compteur du nombre de coups#
Si n = 10 alors
afficher "Perdu"
fin du programme #au bout de 10 essais, la partie est perdue#
Jusqu'à b == a
Afficher "Trouvé"
Afficher n
ça, c'est le texte, maintenant j'aimerais pouvoir traduire cela en langage de programmation ou langage CASIO (ma calculatrice est un CASIO GRAPH 35), n'ayant pas fait d'algorithmique cette année, soyez indulgent et aidez moi s'il-vous-plait à trouver les erreurs dans le programme que j'ai écrit(sans les espaces) :
Intg(101xRan#)
A EXE
0
B EXE
0
N EXE
Repeat B=A EXE
"SAISIR B" EXE
If B strictement inférieur à A (je ne sais pas faire le symbole sur le clavier de mon ordi)Then"Plus" EXE
If B strictement supérieur à A Then "Moins" EXE
N+1
N EXE
If N=10 EXE
Then "Perdu"EXE
End "Trouvé"EXE
N suivi du petit triangle noir qui signifie afficher
EXE
Je rencontre aussi un autre problème, je ne sais pas où se trouvent les touches Repeat et End sur ma calculatrice.
Merci pour votre aide.
Bonjour emiline
,
Personnellement j'ai une casio graph 85 mais je ne pense pas qu'il y ai de grosses différences dans la programmation.
Pour la première ligne moi la fonction s'apelle "int" mais ça c'est peut être juste du à ma calculatrice
Pour la boucle
"REPEAT B=A/END" il faut utiliser "While B
A/WhileEnd"
Sinon après "saisir B" tu as oublier la commande qui permet de demander de saisir B qui est ?
B
De plus toutes les boucles if doivent finir par IfEnd sinon ca va planter
Ce qui me donne:
A EXE
B EXE
N EXE
A EXE
B EXE
N EXE
.Bonjour rezoons,
merci beaucoup d'avoir répondu à mon problème, cependant, sur ma calculatrice le programme ne fonctionne toujours pas. J'ai une question à te poser par rapport à un point du programme, pourquoi traduis-tu #Répéter...Jusqu'à B=A# par While B
A? Avec cette formule, la calculatrice affiche SAISIR B ? puis quel que soit le nombre choisi, Syn ERROR tandis que si je remplace par While B=A, ça ne fonctionne toujours pas correctement puisque que j'obtiens "Trouve" sans meme que je donne une valeur à B puis en dessous 0 et Disp, mais au moins le programme réagit. Donc si tu as le temps, pourrais-tu vérifier que le programme que tu as entré dans ta calculatrice et qui marche est le meme que celui que tu as posté sur le site?
Encore merci.
While B
A signifie répéter la boucle tant que A est différent de B ce qui est équivalent à répéter jusqu'à ce que A=B c'est pour ça que si tu met while B=A la calculatrice ne va même pas rentrer dans la boucle et va directement à la fin (et le 0 qui s'affiche c'est la valeur de N).
Quand au "SAISIR B" il n'est la que pour dire a l'utilisateur du programme de rentrer le chiffre mais en fait il n'est pas très utile.
Sinon mon programme exact est:
A EXE
B EXE
N EXE
A EXE
B EXE
"Plus" EXE
"Moins" EXE
Pour t'aider le While/WhileEnd se trouve en faisant SHIFT/PRGM/F1/F6/F6
Le If/IfEnd se trouve en faisant SHIFT/PRGM/F1
Le Stop se trouve en faisant SHIFT/PRGM/F2
Le Isz et le
se trouve en faisant SHIFT/PRGM/F3
Le
se trouve en faisant SHIFT/PRGM/F6/F3
Re-bonjour;
ça y est enfin ça fonctionne
, merci beaucoup d'avoir été patient, le premier programme que tu m'as proposé ne fonctionnant pas, j'ai essayé l'autre et ça fonctionne très bien, on pourrait meme envisager de l'améliorer en demandant à l'utilisateur de choisir dans quel intervalle le nombre A sera pris aléatoirement et/ou le nombre de coups maximal, qu'en penses-tu?
Je crois que j'ai de nouveau besoin d'aide(j'espère que ce n'est pas considéré comme un multi-post) pour les améliorations envisageables.
Dans le programme, j'ai rajouté "SAISIR LES BORNES DE L INTERVALLE DU NOMBRE A DEVINER"EXE
(?)une flèche d'affection A EXE
"SAISIR LE NOMBRE MAXIMAL DE COUPS" EXE
? une flèche d'affection N EXE
mais du coup je ne sais pas quoi mettre au début du programme lorsque je dois donner leur première valeur aux variables lors de l'initialisation, et ensuite ce que dois écrire pour le test (If N=?...Then "Perdu").
En fait dans le premier programme je ne voulais pas trop rajouter de nouveaux truc que tu risquais de ne pas connaître comme le Isz N qui est l'équivalent de N+1
N mais qui ne marche que pour les entiers. (d'ailleurs il y a aussi Dsz qui est l'équivalent de N-1
N pour les entiers) ou le
qui fonctionne comme un if mais très raccourci c'est à dire que l'on a:
<condition>
<une seule instruction>
alors qu'avec un if on peut mettre plusieurs instructions et on peut mettre un else.
D'ailleurs si ca t'intéresse la programmation sur la calculette il existe quelques tutos intéressants sur internet comme celui-là:
Sinon pour revenir au programme en effet c'est une bonne idée mais la tu t'es un peu emmêler dans les variables.
A vrai dire tu as déja un A donc pour les bornes ils faut choisir d'autres variables, d'ailleurs une ne suffit pas il faut deux variables ce qui va donner:
X
Y
A EXE
M EXEMerci pour toutes ces précisions.
J'ai modifié le programme, ce qui donne (la calculatrice me signale une erreur de syntae qui empeche l'eécution du programme):
A EXE
B EXE
N EXE
X EXE
Y EXE
X EXE
Y EXE
A EXE
M EXE
A EXE
B EXE
"PLUS"EXE
"MOINS" EXE
L'erreur est à la première ligne car Int
A EXE n'a aucun sens. Vire cette ligne et tout devrais remarcher normalement.
Effectivement ça marche jusqu'au nombre maximal de coups, ensuite il y a un erreur de syntaxe avec ce programme (je le réécrit parce quej'avais fait une erreur la premiere fois) :
B EXE
N EXE
X EXE
Y EXE
X EXE
Y EXE
M EXE
B EXE
J'ai du mal me faire comprendre. Quand j'ai dis
B EXE
N EXE
X EXE
Y EXE
X EXE
Y EXE
A EXE
M EXE
A EXE
B EXE
"PLUS"EXE
"MOINS" EXE
Vous devez être membre accéder à ce service...
Pas encore inscrit ?
1 compte par personne, multi-compte interdit !
Ou identifiez-vous :