Poster un nouveau sujet Poster une réponse
Problème de "traduction" d'une formule math vers du code
Auteur Message
Mac Seamus



Autorisation : Membre
Nb de messages : 4
Inscrit le : Mer 24 Oct 2012, 16:14
Posté le : Mar 27 Aoû 2013, 16:05   Citer 

Voilà le stipule mon titre j'ai un petit soucis pour transcrire une formule de calcul.
En effet je débute sur ma Ti (pas eu masse de temps libre devant moi ces derniers mois du coup je m'y remet à peine).
Mon soucis peut-être explicité rapidement:
Je joue online à un jeu nommé ogame (certains doivent connaître).
Jouant sur mon téléphone et ayant ma Ti sur moi en général je souhaite bricoler un programme sur Ti82 pour calculer le pillage.

Je commencerai ainsi:


Code
:Clearhome
:Lbl 0
:Disp "ENTRER VALEURS
:Imput "METAL",M
:Imput "CRISTAL",C
:Imput "DEUTERIUM",D
:Pause
:2M+D Sto F
:3/4(2M+C+D) Sto G
:M+C+D Sto H



Maintenant c'est là le soucis...
Je n'arrives pas à "traduire" la formule suivante:

J'entends par là... coder la formule. Pour les non matheux:
Prendre la plus petite valeur entre F et G
puis ensuite comparer cette valeur à H
et prendre la plus élevée entre les deux
Sauvegarder cette valeur en Sto X par exemple (bien que techniquement y'aiat pas besoin de la sauvegarder, comme j'ai copié mon code à la suite de ce message vous allez comprendre)

Une fois cette valeur atteinte, pas besoin d'appliquer le coefficient 1/2 puisqu'il n'est pas fixe mais variable ainsi une fois la valeur de X connue la suite du programme sera:


Code
:Menu("LA CIBLE EST:","NORMALE",1,"BANDIT",2,"HONORABLE",3
:Lbl 1
:Clearhome
:X/2 Sto Y
:Output(1,1,"VOUS PILLEZ
:Output(2,1,Y
:Output(3,1,"SOIT
:Output(5,1,Y/5000
:Output(5,10,"PT
:Output(7,1,Y/25000
:Output(7,10,"GT
:Goto 4
:Lbl 2
:Clearhome
:Output(1,1,"VOUS PILLEZ
:Output(2,1,X
:Output(3,1,"SOIT
:Output(5,1,X/5000
:Output(5,10,"PT
:Output(7,1,X/25000
:Output(7,10,"GT
:Goto 4
:Lbl 3
:Clearhome
:3X/4 Sto Y
:Output(1,1,"VOUS PILLEZ
:Output(2,1,Y
:Output(3,1,"SOIT
:Output(5,1,Y/5000
:Output(5,10,"PT
:Output(7,1,Y/25000
:Output(7,10,"GT
:Goto 4
:Lbl 4
:Menu("RECOMMENCER","OUI",0,"NON",5
:Lbl5
:Disp "BON PILLAGE!"
:Pause
:Clearhome



Voilà ça vous donne une idée du programme final (qui je pense peut-être largement optimisé mais comme je l'ai dit je débute (mais je suis disposé à apprendre le moindre conseil sera donc bon à prendre winkle.gif)

Au plaisir.
Mac Seamus

 Adresse email Haut de page Bas de page 
 
Google_AdSense



Publicité    



 
m@thieu41



Autorisation : Membre
Nb de messages : 856
Inscrit le : Mer 18 Juil 2012, 18:44
Posté le : Mar 27 Aoû 2013, 18:07   Citer 

Bonjours,

Tu as les fonctions min(arg1,arg2) et max(arg1,arg2) revoient respectivement la plus petite et la plus grande valeur entre arg1 et arg2. Tu les trouves dans Listes (2nde stats), l'onglet math.
Si tu souhaites récupérer les informations entre lesquelles tu as du choisir le maximum/minimun, tu fais donc:

Code
2M+D -> F
.75(2M+C+D -> G
M+C+D -> H
max(H,min(G,F //Renvoi la valeur souhaitée, sans le coefficient de 1/2, tu peux la stocker ou l'utiliser directement.



Sinon si tu veux que la valeur finale:

Code
.5(max(M+C+D,min(2M+D,.75(2M+C+D   //Si tu ne le sais pas les parenthèses/guillemets/crochets et accolades fermantes sont facultatives avant un -> ou un retour à la ligne en ti basic.



Pour l'optimisations tu peux lire cet article.

Quelques remarques sinon:

Code
Goto 4
Lbl 4


Le goto est inutile (si la calto tombe sur une instruction Lbl celle ci sera simplement ignorée).


Code
Disp "BON PILLAGE!"
Pause


Peut etre optimisé en:

Code
Pause "BON PILLAGE!


Pause [arg] permet de mettre en pause le prgm, MAIS AUSSI (et on l'oublie trop souvent) d'afficher un argument juste avant (un seul et non pas autant qu'on veut contrairement à Disp).


Code
3X/4->Y


De manière générale, évites les divisions, et utilises des multiplications (plus rapides à calculer).
De plus limites les calcules à faire.
Ainsi plutot que de multiplier X par 3 puis de diviser le résultat par 4, multiplies directement X par .75

Code
.75X->Y


Ici tu ne gagnes pas en octets, mais un peu en vitesse.

Aussi un autre truc:
plutot que de faire:

Code
Menu("TITRE","1",1,"2",2,"3",3
Lbl 1
ClrHome
...

Lbl 2
ClrHome
...

Lbl 3
ClrHome
...


Fais:

Code
ClrHome
Menu("TITRE","1",1,"2",2,"3",3
Lbl 1
...

Lbl 2
...

Lbl 3
...


Et ça vaut pour tous les calculs/actions que tu veux effectuer quelque soit le choix du menu (sauf des instructions comme pause ou autre bien sur)
Après ca va dépendre des cas... par exemple si tu dois retourner au Lbl 1 (à partir du Lbl 2 par ecrazy.gif et que tu as besion que l'écran oit effacé, ça ne vaut peut etre plus le coup, il faut s'adapter à ce que tu veux faire bien sur.

Bon courage pour la suite, n'hésites pas à reposer des questions winkle.gif

----------------------
Pour vous aidez dans vos débuts (et même ensuite ^^) :
*Tuto Algo->Ti Basic (par Linkakro) : Traduisez vos algo (de type algobox) en prgm pour votre TI!
*Catalogue des emplacements et traductions (anglais/français) des fonctions sur la TI.
*Faites vos propres programmes de maths (par ash)

Et au fait: la politesse n'a jamais tué personne winkle.gif
 Adresse email Haut de page Bas de page 
 
linkakro



Autorisation : Membre
Nb de messages : 3767
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Mar 27 Aoû 2013, 18:47   Citer 

Utilise un seul code d'affichage et contrôle Y ou X avec le menu, c'est plus concis.
Je me passerai d'affecter Y. Et je me passerai aussi d'affecter X car j'utiliserai la variable dernière réponse Ans=Rép. Cela fonctionne car il n'y a ni pause ni calcul extérieur.

Code
:ClrHome
:Lbl 0
:Input "METAL:",M
:Input "CRISTAL:",C
:Input "DEUTERIUM:",D
:max(M+C+D,min(.75(2M+C+D),2M+D
:ClrHome
:Menu("LA CIBLE EST:","NORMALE",1,"BANDIT",2,"HONORABLE",3
:Lbl 1
:Ans/2
:Goto 2
:Lbl 3
:3Ans/4
:Lbl 2
:Output(1,1,"VOUS PILLEZ
:Output(2,1,Ans
:Output(3,1,"SOIT
:Output(5,1,Ans/5000
:Output(5,10,"PT
:Output(7,1,Ans/25000
:Output(7,10,"GT
:Menu("RECOMMENCER","OUI",0,"NON",5
:Lbl 5
:Pause "BON PILLAGE!
:ClrHome



----------------------
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
 Adresse email Haut de page Bas de page 
 
Google_AdSense



Publicité    



 
Mac Seamus



Autorisation : Membre
Nb de messages : 4
Inscrit le : Mer 24 Oct 2012, 16:14
Posté le : Mer 28 Aoû 2013, 8:50   Citer 

Bonjour et merci de vos réponses (et astuces!) je vais essayer de transcrire ça dès ce soir (enfin si le temps me le permet :p)
suivant ensuite mon temps libre je ferais des "tests", voire intégrer d'autres formules à ce programme, je doute qu'il intéresse quelqu'un mais une fois terminé (ce qui peut prendre du temps au vu de mon temps libre), je le posterai partie programme afin d'avoir au moins des avis winkle.gif).

Si j'ai une autre question à l'issue de mes tests, je reviendrais la poser dans ce fil de discussion.

Merci encore et à très vite.
Mac Seamus

 Adresse email Haut de page Bas de page 
 
Poster un nouveau sujet Poster une réponse





  Powered by Fire-Soft-Board v1.0.10 © 2004 - 2024 Groupe FSB
Page générée en 9 requêtes
BlackOne par Grimmlink