Poster un nouveau sujet Poster une réponse
Algorithme d'Euclide complet
Auteur Message
Mathérible



Autorisation : Membre
Nb de messages : 12
Inscrit le : Mar 20 Nov 2012, 21:24
Posté le : Mer 21 Nov 2012, 11:37   Citer 

Salut

Je suis nouveau sur le site et j'aimerais savoir ce que vous pensez de mon programme qui contient:
-des calcules étapes par étapes
-Le résultat sous forme de PGCD
-Le résultat sous forme de PPCM

Info:
-=/=:Différent de
->=:supérieur ou égal
-<=:inférieur ou égal
-->:la flèche sto


Code
PROGRAM:ALGORITM
:EffEcr
:Input "X=",X
:X->A
:Disp ""
:Input "Y=",Y
:Y->B
:If X<=0 ou Y<=0
:Then
:EffEcr
:Disp "CALCUL","IMPOSSIBLE"
:Pause
:EffEcr
:Stop
:End
:If X=Y
:Goto 4
If X>Y
:Goto 1
:If X<Y
:Goto 2
:Lbl 1
:ent(X/Y)->Q
:X-Y*Q->R
:EffEcr
:Output(1,1,"Q=")
:Output(1,3,Q)
:Output(3,1,"R=")
:Output(3,3,R)
:Pause
:Goto 3
:Lbl 2
:ent(Y/X)->Q
:Y-X*Q->R
:EffEcr
:Output(1,1,"Q=")
:Output(1,3,Q)
:Output(3,1,"R=")
:Output(3,3,R)
:Pause
:Lbl 3
:EffEcr
:If R=/=0 et X>Y
:Then
:Y->X
:R->Y
:Output(1,1,"X=")
:Output(1,3,X)
:Output(3,1,"Y=")
:Output(3,3,Y)
:Pause
:Goto 1
:End
:If R=/=0 et X<Y
:Then
:R->Y
:Output(1,1,"X=")
:Output(1,3,X)
:Output(3,1,"Y=")
:Output(3,3,Y)
:Pause
:Goto 1
:End
:If R=0 et X>Y
:Goto 4
:If R=0 et X<Y
:X->Y
:Lbl 4
:EffEcr
:Output(1,1,"PGCD(")
:Output(1,6,A)
:Output(1,10,",")
:Output(1,11,B)
:Output(1,15,")=")
:Output(2,1,Y)
:A*B/Y->Z
:Output(4,1,"PPCM(")
:Output(4,6,A)
:Output(4,10,",")
:Output(4,11,B)
:Output(4,15,")=")
:Output(5,1,Z)
:Pause
:EffEcr



J'attend vos avis happy.gif

 Adresse email Haut de page Bas de page 
 
m@thieu41



Autorisation : Membre
Nb de messages : 848
Inscrit le : Mer 18 Juil 2012, 18:44
Posté le : Mer 21 Nov 2012, 14:09   Citer 

Coucou!
Bienvenue sur le forum alors bigmouth.gif
J'ai quelques conseils à te donner, par contre j'ai pas testé ton code (un peu la flemme de tout recopier). Déjà, tu n'as pas besoin de fermer les " et les ) avant:
_un retour à la ligne
_un ->

Il y a aussi un truc: le lbl 1 et le 2 font la même chose, pourquoi les séparer crazy.gif
Sinon, c'est pas mal comme programme, continue comme ça 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 : 3738
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Mer 21 Nov 2012, 15:57   Citer 

Les Lbl 1 et 2 servent à s'adapter selon celui des nombres le plus grand.

Cependant, et je ne m'en souvenais pas moi-même, l'algorithme fonctionne aussi quand le nombre le plus grand est donné en deuxième.

Les Gotos sont placés dans des alternatives If/Then, cela peut causer des problèmes.
Je t'invite à consulter les ressources suivantes pour en apprendre les conséquences.
https://web.archive.org/web/20121218002930/http://www.siteduzero.com/tutoriel-3-407869-amusons-nous-avec-les-end.html
https://tout82.pages-perso.free.fr/forum/sujet.php?sujet=2757

Mon conseil le plus important est d'utiliser des boucles à la place des gotos pour répéter des actions.

exemple épuré à l'extrème : algeuc
Il ne manque plus que le calcul du ppcm et des affichages plus conséquents.

Echanger les valeurs dans les variables permet d'adapter l'algorithme selon la valeur la plus grande sans avoir besoin d'écrire deux fois l'algorithme.
Mais puisque l'agorithme fonctionne aussi pour une interversion ne nous dérangeons pas.

Ne pas refermer les parenthèses, guillemets, acollades et crochets permet d'économiser de la mémoire.
Malgré tout prend l'habitude de placer des guillemets sur les fins de lignes de texte si ce texte est une série d'espaces.
Output(1,1," "


Code
:EffEcr
:Input "X=",X
:X->A
:Disp ""
:Input "Y=",Y
:Y->B
:If X<=0 ou Y<=0
:Then
:EffEcr
:Disp "CALCUL","IMPOSSIBLE
:Pause
:EffEcr
:Stop
:End

:If X=/=Y
:Then
:While Y
:X-ent(X/Y)*Y->R
:Y->X
:R->Y
:Output(3,1,"Q=
:Output(3,3,Q
:Output(4,1,"R=
:Output(4,3,R
:Pause
:EffEcr
:If R
:Then
:Output(1,1,"X=
:Output(1,3,X
:Output(3,1,"Y=
:Output(3,3,Y
:Pause
:EffEcr
:End
:End
:End

 // attention : à partir d'ici j'ai remplacé Y par X.
Je n'ai pas placé de test pour éviter le stockage du pgcd dans X et 0 dans Y.
En conclusion le pgcd est dans X.

:EffEcr
:Output(1,1,"PGCD(
:Output(1,6,A
:Output(1,10,",
:Output(1,11,B
:Output(1,15,")=
:Output(2,1,X
:A*B/X->Z
:Output(4,1,"PPCM(
:Output(4,6,A
:Output(4,10,",
:Output(4,11,B
:Output(4,15,")=
:Output(5,1,Z
:Pause
:EffEcr

On peut aussi écrire dans le graphique pour faciliter la mise en page avec la fonction Text.

Code
Text(20,30,"PPCM",A,",",B,")=",Z
Dans cet exemple 20 et 30 sont des coordonnées.



----------------------
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 
 
Overdozage



Autorisation : Membre
Nb de messages : 24
Inscrit le : Jeu 18 Oct 2012, 21:19
Posté le : Mer 21 Nov 2012, 17:09   Citer 

Woaw quand je pense qu'il suffirait d'utiliser la fonction pgdc( et ppcm( au lieu de tous ces calculs ^^

 Adresse email Haut de page Bas de page 
 
linkakro



Autorisation : Membre
Nb de messages : 3738
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Mer 21 Nov 2012, 17:39   Citer 

Oui mais il faut bien s'entraîner à programmer, non ?
De plus ces fonctions n'existent pas dans la ti82basique.

----------------------
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 
 
m@thieu41



Autorisation : Membre
Nb de messages : 848
Inscrit le : Mer 18 Juil 2012, 18:44
Posté le : Mer 21 Nov 2012, 19:46   Citer 

Oups minied.gif désolé j'avais pas vu que les X et les Y étaient inversés crazy.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 
 
Google_AdSense



Publicité    



 
Mathérible



Autorisation : Membre
Nb de messages : 12
Inscrit le : Mar 20 Nov 2012, 21:24
Posté le : Jeu 22 Nov 2012, 18:03   Citer 


Citer
Woaw quand je pense qu'il suffirait d'utiliser la fonction pgdc( et ppcm( au lieu de tous ces calculs ^^



Les touches pgcd( et ppcm( ne font pas de calculs par étape à ce que je sache Overdozage

 Adresse email Haut de page Bas de page 
 
Overdozage



Autorisation : Membre
Nb de messages : 24
Inscrit le : Jeu 18 Oct 2012, 21:19
Posté le : Jeu 22 Nov 2012, 18:22   Citer 

Je sais, mais bon, comme l'a dit linkakro c'est pour s'entraîner (moi je disais juste ça parce que je savais pas que tu connaissais leur exsitence winkle.gif)

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





  Page générée en 9 requêtes