Bonjour à tous
Dans un DM en spécialité je dois créer un programme relatif à l'algorithme d'Euclide étendu qui doit donc me permettre de calculer les coefficients ui et vi tels que au+bv=c avec a et b des entiers quelconques.
L'énoncé indique qu'a chaque étape de l'algorithme, on peut écrire le reste rn sous la forme rn=un*a+vn*b et on pose r0=a et r1=b.
Dans l'algorithme, je fais donc apparaître les valeurs r0 r1 et r2 donc u0 v0 ...etc.
Le problème c'est que j'ai l'impression que la calculatrice n'accepte pas les indices 0,1 et 2 ou alors il faut les définir initialement?
Il s'agit de mon 1er programme donc j'ai quelques difficultés dans la manière de procédé (par exemple les liens logiques)
J'espère que vous pourrez m'aider.
Merci.
c'est un algorithme pour TI 82. Je suis conscient que ça doit pas être terrible mais bon...le voici
Le programme doit se baser sur l'algorithme d'Euclide et permettre le calcul des coefficients Ui et Vi tels que au+bv=c
Prompt A,B
A->R0
B->R1
R0->U0*A+V0*B
R1->U1*A+V1*B
U0=1
V0=0
U1=0
V1=1
While R10
int(R0/R1)->Q1
R0-R1*Q1->R2
R2->U2*A+V2*B
U2->U0-Q1*U1
V2->V0-Q1*V1
Disp U2
Disp V2
Pause
R1->R0
R2->R1
End
J'utilise ici des suites Un et Vn mais j'ai également essayé en remplaçant respectivement les valeurs U0,U1,V0 et V1 par P,Q,R et S afin d'"alléger" l'écriture. Je pense qu'il y a un problème avec les indices et il y surement moyen de faire plus court.
Je rappelle que l'énoncé indique que l'algorithme démarre à la division:
r0=r1*q1+r2 avec r0=a et r1=b.
A mon avis, en toute logique, il faudrait mettre U0=0, V0=0, U1=0, V1=0 au début, puis Ro->
Puis R1->
Et enfin A et B.
Sinon, il ne peut ps la calculer.
En meme teps je ne connais pas la programmation TI, mais ca doit être proche du basic, et la logique doit être respectée
Je ne comprend pas très bien pourquoi il faudrait mettre U0,V0,U1 et V1 =0 étant donné que lorsqu'on écrit R0 et R1 sous la forme U0*a+Vo*b, on trouve U0=1 et Vo=0.
C'est justement par le calcul de ces coefficients que débute l'exercice.
Je suis peut être entetté mais je n'arrive pas très bien à comprendre pourquoi mettre tous les coefficient égaux à 0 par contre je comprends bien que l'ordre dans lequel j'ai mis les différents éléments soient faux.
Je vais essayer de faire ce que tu m'as indiqué.
Merci.
Bon voilà ce que j'ai réussi à faire. Ce n'est toujours pas bon mais au moins le processeur accepte les variables R0 et R1.
Prompt A,B
U0=1
V0=0
U1=0
V1=1
U0*A+V0*B=R0
U1*A+V1*B=R1
R0->A
R1->B
While R10
int(R0/R1)->Q1
R0-R1*Q1->R2
Disp R2
U2=U0-Q1*U1
V2=V0-Q1*V1
R2->U2*A+V2*B
Disp U2
Disp V2
Pause
R1->R0
R2->R1
End
Le problème que je rencontre est que ma calculatrice affiche, quelquesoit mes valeurs de a et de b (en langage TI):
" 0
Done"
Il doit donc y avoir un problème dans la boucle mise en place seulement malgré la lecture du manuel d'utilisation et d'autres essais de programmes, je ne trouve pas ce qui est faux.
Oui ils sont déterminés par Prompt.
Lors du lancement du programme on choisit des valeurs pour A et B.
A la cinquième ligne, on affecte R0 à U0*A+V0*B
A et B ne changent pas dans le programme. On n'y touche pas, c'est ca?
C'est R0 et R1 qui changnt. dans ce cas, R0->A
et R1-> Doivent être juste après le Prompt, Ou apres le V1=1, mais avant le R0= et le R1=
L'énoncé indique que l'algorithme commence à la division A=B*Q1+R2 et par soucis d'écriture, on pose A=R0 et B=R1.
Mais à partir de là oui c'est bien R0 et R1 qui changent.
Toutefois puisqu'il faut former une boucle, je pense qu'il est nécessaire de poser dans le programme:
R1->R0
R2->R1
Non?
Ce que je ne comprends décidemment pas c'est que le processeur ne "comprend pas" les valeurs Q1 ou R2 par exemple (c'est l'écriture qui doit lui poser problème) alors que si je mets Q ou R il le prend en compte.
Pourquoi?
Sinon est ce que la boucle de calcul mise en place vous parait bonne parce que c'es peut etre là qu'est le problème.
salut je n ai pas tout lu mais pour Q1 et R2 pe etre qu il ne prend que une seul lettre pour une variable meme si cela me semble etrange
Non, je ne pense pas que c'est ca. Une variable doit commencer par une lettre, mais après on met ce que l'on veut.
Je suis en train de le reprendre point par point et en fait lorsque je lui demande d'afficher U2 et V2 (Disp U2 et Disp V2) il m'affiche toujours 0 pour les deux.
Avez vous une idée du pourquoi?
Vous devez être membre accéder à ce service...
Pas encore inscrit ?
1 compte par personne, multi-compte interdit !
Ou identifiez-vous :