| Programme aléatoire |
| Auteur |
Message |
lovespain
Invité
|
Posté le : Jeu 08 Déc 2011, 20:15
|
|
|
Bonsoir tout le monde !
Alors voilà je dois faire un programme avec l'énoncé suivant:
La calculatrice choisit un nombre entier aléatoire X compris en 1 et 10 inclus
Le joueur fait 3 propositions pour X
Le programme affiche "Perdu" si le joueur n'a pas trouvé X et "GAGNE" s'il a trouvé X
Moi j'ai fait ceci:
:entAléat(1,10)->X
:Input X
:If X=NbrAléat
:Then
:Disp "GAGNE"
:Else
:Disp "PERDU AUTRE CHANCE"
:End
:Input X
:If X=NbrAléat
:Then
:Disp "GAGNE"
:Else
:Disp "PERDU AUTRE CHANCE"
:End
:Input X
:If X=NbrAléat
:Then
:Disp "GAGNE"
:Else
:Disp "Perdu"
:End
Mais le problème c'est qu'il me met toujours Perdu
|
| |
|
| |
tilo1996
Autorisation : Membre
Nb de messages : 122
Inscrit le : Sam 23 Avr 2011, 10:47
|
Posté le : Jeu 08 Déc 2011, 20:31
|
|
|
C'est normal Deja, la fonction nbraleat n'est pas la bonne, il faut utiliser entaleat(1,10) Et ensuite, il faut stocker ce resultat dans une variable, parce que la technique que tu utilise fait recalculer un nombre aleatoire a la calculatrice a chaque fois. Je te propose ce code
| Code | Entaleat(1,10)->X
Prompt A // Est l'equivalent d'input
If A=X: Then
Disp"Gagné
Stop // Le stop est important
End
Disp"Essaie encore
Prompt A
If A=X: Then
Disp"Gagné
Stop
End
Disp"Essaie encore
Prompt A
If A=X:Then
Disp"Gagné
Stop
End
Disp"perdu |
|
 |
|
| |
tapenad
Autorisation : Membre
Nb de messages : 197
Inscrit le : Jeu 17 Nov 2011, 13:20
|
Posté le : Jeu 08 Déc 2011, 20:32
|
|
|
essaie ca:
| Code |
:0->E
:entAléat(1,10)->X
:while1
:Input"NBR",A
:If X=A
:Then
:Disp "GAGNE"
:Stop
:End
:If X[differend de]A
:Then
:Disp"UNE AUTRE CHANCE
E+1->E
:end
:If E=3
:Stop
:end
|
voila (je ne suis pas sur qu'il marche)
pour changer le nbr de coup change le E=3
---------------------- L’erreur est humaine, mais pour provoquer une vraie catastrophe, il faut un ordinateur.
je suis premier!!!
je m'aime. |
 |
|
| |
linkakro
Autorisation : Membre
Nb de messages : 3738
Inscrit le : Lun 19 Oct 2009, 21:25
|
Posté le : Jeu 08 Déc 2011, 20:43
|
|
|
Il y a plusieurs dizaines de programmes sur ce thème dans le forum.
Le premier problème dans ton prog est qu'un code faux dans le premier test arrête le programme alors qu'on veut que le programme poursuive encore 2 fois.
Le second problème est que NbrAléat n'est pas un entier mais un aléatoire entre 0 et 1
Le troisième problème est que tu utilises une seule variable pour ta saisie et l'aléatoire.
Il faut imbriquer les tests et utiliser deux variables.
Voici le code le plus proche de l'objectif en structure.
| Code | :entAléat(1,10)->Y
:Prompt X
:If X=Y // premier test
:Then
:Disp "GAGNE
:Else // premier "sinon" qui introduit la suite
:Disp "PERDU AUTRE CHANCE
:Prompt X
: If X=Y // second test
: Then
: Disp "GAGNE
: Else // second "sinon" qui introduit la suite
: Disp "PERDU AUTRE CHANCE
: Prompt X
: If X=Y // troisième test
: Then
: Disp "GAGNE
: Else // ultime "sinon" qui sert à dire qu'on perd
: Disp "PERDU
: End // fin de la dernière instruction
: End // fin de la seconde instruction
:End // fin de la première instruction |
Ceci est condensé mais s'éloigne de la structure d'origine.
(Le code de tilo représente un bon comprommis)
| Code | entAléat(1,10)->Y
EffVar A
Repeat X=Y // autorise à lire la fin du programme si X=Y
A+1->A // sert à compter le nombre d'essais
If A=4 // vaut 4 si on a échoué la troisième fois
Then
Disp "PERDU
Stop
End
Prompt X
End // fin du repeat , ce qui se trouve en dessous n'est pas lu si X=/=Y
"GAGNE // pas besoin de Disp car c'est à la fin |
---------------------- ti82statfr: 2008, inscrit: 2009, ti84pocketfr: noël2011, ti30xbmultiview: iut 2012-2014
Perfectionniste, manque tact. Pas le temps de tout publier depuis 2011. Répond toujours aux questions. (rédigé juin 2014)
Pour tout le monde et surtout les débutants, quelques-uns des articles courants :
*Traductions Algorithmie/Ti-Basic.
*Caractères spéciaux sur Tout82
Les défauts du TI-Basic : Goto_versus_algo et DelVar/End/Lbl/guillemet/store |
 |
|
| |
tilo1996
Autorisation : Membre
Nb de messages : 122
Inscrit le : Sam 23 Avr 2011, 10:47
|
Posté le : Jeu 08 Déc 2011, 20:58
|
|
|
Euh Linkakro es tu sur que mon prog s'arrete apres un echec??? Je le revois et je ne vois pas ce qui pourrait poser un probleme....
|
 |
|
| |
linkakro
Autorisation : Membre
Nb de messages : 3738
Inscrit le : Lun 19 Oct 2009, 21:25
|
Posté le : Jeu 08 Déc 2011, 21:14
|
|
|
J'ai lu trop vite.
D'ailleurs ton code présente l'avantage d'être correctement réduit sans trop s'éloigner de la structure de base. Les miens sont soit trop condensés soit pas du tout optimisés.
J'édite mon message.
---------------------- ti82statfr: 2008, inscrit: 2009, ti84pocketfr: noël2011, ti30xbmultiview: iut 2012-2014
Perfectionniste, manque tact. Pas le temps de tout publier depuis 2011. Répond toujours aux questions. (rédigé juin 2014)
Pour tout le monde et surtout les débutants, quelques-uns des articles courants :
*Traductions Algorithmie/Ti-Basic.
*Caractères spéciaux sur Tout82
Les défauts du TI-Basic : Goto_versus_algo et DelVar/End/Lbl/guillemet/store |
 |
|
| |
Polymorph
Autorisation : Membre
Nb de messages : 118
Inscrit le : Dim 13 Nov 2011, 14:26
|
Posté le : Jeu 08 Déc 2011, 23:12
|
|
|
Personnellement, le plus condensé et clair que je vois pour moi serait ça :
| Code | entAléat(1,10)->Y
EffVar A
Repeat X=Y or A=3 // double condition permettant d'économiser une ou deux ligne de code
A+1->A // sert à compter le nombre d'essais
Prompt X
End // fin du repeat
Output(6,5,"GAGNE
If A=3
Output(6,5,"PERDU //Le "Perdu" écrase le Gagné si l'on perd |
----------------------
| Citer | | Le temps est une variable dans une boucle infinie, qu'on ne cesse d'incrémenter. |
Polymorph, 23/11/2011 |
 |
|
| |
sandro
Autorisation : Membre
Nb de messages : 1366
Inscrit le : Ven 25 Mar 2011, 22:58
|
Posté le : Ven 09 Déc 2011, 21:38
|
|
|
je crois que tu as oublié un End à la fin, et c'est encore optimisable.
ça donnerait donc ça:
| Code | entAléat(1,10->Y
EffVar ARepeat X=Y or A=3 // double condition permettant d'économiser une ou deux ligne de code
A+1->A // sert à compter le nombre d'essais
Prompt X
End // fin du repeat
Output(6,5,"GAGNE
If A=3
Output(6,5,"PERDU //Le "Perdu" écrase le Gagné si l'on perd
End |
---------------------- mort à l'inutile, place à la mémoire libre et aux programmes |
 |
|
| |
Polymorph
Autorisation : Membre
Nb de messages : 118
Inscrit le : Dim 13 Nov 2011, 14:26
|
Posté le : Ven 09 Déc 2011, 22:47
|
|
|
Ma foi, non, je n'avais pas oublié de End oô. J'ai toujours du mal avec le Effvar collé perso 
----------------------
| Citer | | Le temps est une variable dans une boucle infinie, qu'on ne cesse d'incrémenter. |
Polymorph, 23/11/2011 |
 |
|
| |
The K
Autorisation : Membre
Nb de messages : 850
Inscrit le : Sam 15 Oct 2011, 11:07
|
Posté le : Sam 10 Déc 2011, 20:02
|
|
|
Tu n'as en effet pas oublié de end ... tu as juste mis ton "If A=3 Output(6,5 etc " au mauvais endroit 
---------------------- La la la ...
Avez-vous pensé à regarder le manuel avant de demander conseil ? Un manuel est fait avant tout pour être consulté : MANUEL
Vous avez un problème avec l'ordinateur avec votre calculatrice ? SOLUTION EN VIDEO
Mes programmes sur le site : Produit scalaire KMorpion Puissance 4 Mastermind
Mes nouveaux programmes de calcul formel : FCarré FPrime
Projet base de données : ici mais abandonné. Trop de travail ... |
 |
|
| |
Polymorph
Autorisation : Membre
Nb de messages : 118
Inscrit le : Dim 13 Nov 2011, 14:26
|
Posté le : Sam 10 Déc 2011, 22:06
|
|
|
Mais non! Ce n'est pas au mauvais endroit bordel! xD Mais essayez le code quoi!
----------------------
| Citer | | Le temps est une variable dans une boucle infinie, qu'on ne cesse d'incrémenter. |
Polymorph, 23/11/2011 |
 |
|
| |
The K
Autorisation : Membre
Nb de messages : 850
Inscrit le : Sam 15 Oct 2011, 11:07
|
Posté le : Dim 11 Déc 2011, 11:04
|
|
|
Ah oui non excuse moi je n'avais pas vu le Or après le repeat ahem 
---------------------- La la la ...
Avez-vous pensé à regarder le manuel avant de demander conseil ? Un manuel est fait avant tout pour être consulté : MANUEL
Vous avez un problème avec l'ordinateur avec votre calculatrice ? SOLUTION EN VIDEO
Mes programmes sur le site : Produit scalaire KMorpion Puissance 4 Mastermind
Mes nouveaux programmes de calcul formel : FCarré FPrime
Projet base de données : ici mais abandonné. Trop de travail ... |
 |
|
| |
Polymorph
Autorisation : Membre
Nb de messages : 118
Inscrit le : Dim 13 Nov 2011, 14:26
|
Posté le : Dim 11 Déc 2011, 18:58
|
|
|
Merci! 
----------------------
| Citer | | Le temps est une variable dans une boucle infinie, qu'on ne cesse d'incrémenter. |
Polymorph, 23/11/2011 |
 |
|
| |
lovespain
Autorisation : Membre
Nb de messages : 7
Inscrit le : Jeu 08 Déc 2011, 20:05
|
Posté le : Mar 27 Déc 2011, 17:34
|
|
|
Merci pour tous ces programmes, finalement le prof voulait un programme en while donc du coup j'ai ecrit
| Code |
entAleat(1,10)->X
Disp "entre un nombre entre 1 et 10"
While A {different de } X
Disp "Essai"
Input A
If A=X
Then
Disp "Gagné"
Else
Disp "Perdu"
End
End
Disp " L'inconnu est", X |
voilà, je voulais améliorer mon programme en mettant le nombre de coup utilisé avant que le joueur ait trouvé le bon nombre ainsi que d'aider le joueur en ajoutant + ou -, mais je n'arrive pas avec la boucle While quelqu'un peu m'aider?
|
 |
|
| |
linkakro
Autorisation : Membre
Nb de messages : 3738
Inscrit le : Lun 19 Oct 2009, 21:25
|
Posté le : Jeu 29 Déc 2011, 23:20
|
|
|
| Code | entAleat(1,10->X
Disp "SAISIS UN NOMBRE ENTRE 1 et 10 // je préfère respecter les majuscules
EffVar E // pas obligé de sauter une ligne ici
While A-X et E<3 // je teste aussi le nombre d'essais // A-X = A=/=X
E+1->E
EffEcr
Disp "ESSAI
Output(1,7,E // histoire de faire joli en combinaison avec EffEcr
Prompt A
If A=X
Then
Disp "GAGNE // pas besoin de guillemets à la fin des disp, output, text...
Stop
Else
Disp "RATE
End
End
Disp "PERDU","L'INCONNUE EST", X |
---------------------- ti82statfr: 2008, inscrit: 2009, ti84pocketfr: noël2011, ti30xbmultiview: iut 2012-2014
Perfectionniste, manque tact. Pas le temps de tout publier depuis 2011. Répond toujours aux questions. (rédigé juin 2014)
Pour tout le monde et surtout les débutants, quelques-uns des articles courants :
*Traductions Algorithmie/Ti-Basic.
*Caractères spéciaux sur Tout82
Les défauts du TI-Basic : Goto_versus_algo et DelVar/End/Lbl/guillemet/store |
 |
|
| |