1

bonjours a tous !

Voila j'ai un probléme avec mon programme de math... Je ne suis pourtant pas loin de la vérité (enfin je crois...).
Le but du programme est de trouver le PGCD d'un nombre a et b ainssi que les réels u et v telle que au + bv = PGCD(a,b). Pratique pour les Spé Math en S. Notre prof nous impose un organigramme ci dessous :

09L2

Voila ma "traduction" si on peut dire comme sa ^^ :

pgcduv()
Prgm
Input "a",a
Input "b",b
{a,1,0}->ly
{b,1,0}->lz
While lz[1]"(différent de)"0
entPréc(ly[ 1 ]/(lz[ 1 ]))->q
ly-(q*lz)->lt
lz->ly
lt->lz
EndWhile
Disp ly[ 1 ]
Disp ly[ 2 ]
Disp ly[ 3 ]
EndPrgm

voila, le probléme est que le progamme m'affiche le bon PGCD de a et b mais u et v reste tout le temps égale a 0... exemple :
a = 128 et b = 36. Logiquement le PGCD est 4 et par calcul mathématique on obtient u = 2 et v = -7 (128*2 + 36*(-7) = 4 donc)...
avatar

2

Essai avec ca deja (ce qui est en gras) :

pgcduv()
Prgm
Local a,b
Input "a",a
Input "b",b
{#a,1,0}->ly
{#b,1,0}->lz
While lz"(différent de)"0 // Mais ici ya une erreur car lz est une liste : elle ne peut pas etre évaluée par rapport à '0'
entPréc(ly[ 1 ]/(lz[ 1 ]))->q // Ce que tu as marqué ici reviens a ecrire : entPréc(1/1)->q car ly[1] = 1 et lz[1] = 1 (les index de listes commencent a 0 attention smile )
ly-(q*lz)->lt // une soustraction sur une liste ? confus
lz->ly
lt->lz
EndWhile
Disp ly[ 1 ]
Disp ly[ 2 ]
Disp ly[ 3 ] // c'est le 4eme element de la liste ly confus (cf. les index tongue )
EndPrgm
"De l'Art de faire des Posts qui ne servent a Rien." (c) Ximoon

15:13 @Ximoon - 29-11-2005
"C'est débile ce sondage, une fois de plus Dude, tu ne sers à rien #hehe#" #love# Il est collector celui là ^^

18:56 @Ximoon - 09-10-2010
"Mince Dude sert à quelque chose %) (pas taper :D )" Owii xD #trilove#

3

no, ton local ne marche pas... Mais vu les remarque je vais reverifié mon organigrame !
avatar

4

apparament mon organigramme est juste, et il y a bien un "quatriéme élèment" pour ly, la blague a 2 franc sur le cinquiéme élèment de mon prof de math a été inoubliable ^^
avatar

5

Et avec ca :

pgcduv()
Prgm
Local a,b
Input "a",a
Input "b",b
{#a,1,0}->ly
{#b,1,0}->lz
{0,0,0}->lt
While lz[ 0 ] "différent de" 0
entPréc(ly[ 0 ]/(lz[ 0 ]))->q
ly[ 0 ]-(q*lz[ 0 ])->lt[ 0 ]
ly[ 1 ]-(q*lz[ 1 ])->lt[ 1 ]
ly[ 2 ]-(q*lz[ 2 ])->lt[ 2 ]
lz->ly
lt->lz
EndWhile
Disp ly[ 0 ]
Disp ly[ 1 ]
Disp ly[ 2 ]

Ce n'est pas du tout optimisé, c'est juste pour respecter la logique de ton schéma smile

Edit > Heu pour ton 4eme element o_O
"De l'Art de faire des Posts qui ne servent a Rien." (c) Ximoon

15:13 @Ximoon - 29-11-2005
"C'est débile ce sondage, une fois de plus Dude, tu ne sers à rien #hehe#" #love# Il est collector celui là ^^

18:56 @Ximoon - 09-10-2010
"Mince Dude sert à quelque chose %) (pas taper :D )" Owii xD #trilove#

6

j'ai un message d'erreure

"L'argument doit etre une chaine de caractére"

Et il m'envoye a {#a,1,0}->ly
avatar

7

Dude> les index commencent à 1 en TI-Basic donc c'était bon hehe et puis oui on peut faire des opérations sur les liste tongue

Psyko Taker> Ton initialisation des listes la et lb est fausse (sur la feuille) vu que le troisième paramètre sert à rien (il vaut toujours 0).
-> lb
c'est{a,1,0} -> la
{b,0,1} 
Et puis fais une fonction c'est plus pratique qu'un programme happy Voilà ce que ça donne en plus classe tongue
pgcduv(a,b)
Func
Local c
{a,1,0} -> a
{b,0,1} -> b
While a[1]<>0
 a -> c
 b-a*int(a[1]/b[1]) -> a
 c -> b
EndWhile
EndFunc
avatar
Combien de tas de bois une marmotte pourrait couper si une marmotte pouvait couper du bois ?