Inscription / Connexion Nouveau Sujet
Niveau terminale
Partager :

Programmation d'un algorithme

Posté par
blackbird
04-01-07 à 13:55

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.

Posté par
blackbird
re : Programmation d'un algorithme 04-01-07 à 19:05

Ca n'inspire personne?

Si ça vous arrange je peux vous proposer mon programme bien qu'il soit faut.

Posté par
Eric1
re : Programmation d'un algorithme 04-01-07 à 19:06

Vas-y pour se donner une idée...

Posté par
blackbird
re : Programmation d'un algorithme 04-01-07 à 20:07

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.

Posté par
Eric1
re : Programmation d'un algorithme 04-01-07 à 20:12

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

Posté par
blackbird
re : Programmation d'un algorithme 04-01-07 à 20:20

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.

Posté par
Eric1
re : Programmation d'un algorithme 04-01-07 à 20:30

Met toi à la place du processeur:

A->R0 ?? à quoi est égal R0 ou A au début...

Posté par
blackbird
re : Programmation d'un algorithme 05-01-07 à 09:27

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.

Posté par
Eric1
re : Programmation d'un algorithme 05-01-07 à 10:47

Non, laisse le U0=1 et V1=1. C'était une distraction.

Posté par
blackbird
re : Programmation d'un algorithme 05-01-07 à 12:51

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.

Posté par
Eric1
re : Programmation d'un algorithme 05-01-07 à 12:59

A et B sont determinés par Prompt?

R0->U0*A+V0*B
R1->

Posté par
blackbird
re : Programmation d'un algorithme 05-01-07 à 13:34

Oui ils sont déterminés par Prompt.
Lors du lancement du programme on choisit des valeurs pour A et B.

Posté par
Eric1
re : Programmation d'un algorithme 05-01-07 à 14:04

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=

Posté par
blackbird
re : Programmation d'un algorithme 05-01-07 à 14:13


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?

Posté par
blackbird
re : Programmation d'un algorithme 06-01-07 à 12:51

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.

Posté par
suistrop
re : Programmation d'un algorithme 06-01-07 à 12:54

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

Posté par
Eric1
re : Programmation d'un algorithme 06-01-07 à 12:57

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.

Posté par
blackbird
re : Programmation d'un algorithme 06-01-07 à 20:13

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?

Posté par
blackbird
re : Programmation d'un algorithme 10-01-07 à 13:32



Vous devez être membre accéder à ce service...

Pas encore inscrit ?

1 compte par personne, multi-compte interdit !

Ou identifiez-vous :


Rester sur la page

Inscription gratuite

Fiches en rapport

parmi 1742 fiches de maths

Désolé, votre version d'Internet Explorer est plus que périmée ! Merci de le mettre à jour ou de télécharger Firefox ou Google Chrome pour utiliser le site. Votre ordinateur vous remerciera !