Page 1 of 2

Spé Terminale S - Adaptation d'un programme pour Nspire....

Unread postPosted: 19 Oct 2009, 20:01
by Adriweb
B'jour à tous,

Voila l'histoire, je suis en Term.S Spé maths et donc bon, ben il est souvent utile de faire des programmes pour par exemple, trouve a et b tel que PGCD(a,b) = x et PPCM(a,b) = y bref, c'est bien pour vérifier etc.

J'ai donc fait ca tranquillement sur ma nspire cas, sans probleme, le programme marche, voila le code : (vous pouvez me dire ce que vous en pensez...)

Code: Select all
Define LibPub pgcdppcm(d,m)=
Prgm
:DelVar liste
:1 [-] j
:{2,3,5,7,11,13,17,19,23,31,37,41} [-] lprem
:((m)/(d)) [-] apbp
:Disp "a'*b' = ",apbp
:For i,lprem[1],lprem[dim(lprem)]
:If remain(apbp,i)=0 Then
:i [-] liste[j]
:j+1 [-] j
:EndIf
:EndFor
:Disp {1,apbp}
:Disp liste
:EndPrgm


Le problème vient après, quand j'ai voulu faire ce même programme, mais cette fois sur ma 84+. La, tout est possible aussi, c'est pas très compliqué comme code, comme vous l'avez peut-être vu, mais pourtant, ca ne donne pas les mêmes résultats...

Jugez par vous-mêmes avec le code (N'hésitez pas a me dire ce qui va pas / peut être amélioré) :
Code: Select all
:ClrHome
:ClrAllLists
:Input "PGCD(a,b)= ",D
:Input "PPCM(a,b)= ",M
:1 [-] J
:{1,2,3,5,7,11,13,17,19,23,31,37 [-] LPREM
:dim(LPREM [-] L
:M/D [-] C
:Output(5,1,"a'*b' =
:Output(5,9,C
:For(i,LPREM(1),LPREM(L)
:If not(fPart(C/I
:Then
:I [-] LRES(J
:J+1 [-] J
:End
:End
:Output(7,1,LRES
:Pause
:ClrHome
:Output(1,1,"


Bon, et bien quand j'exécute ces programmes avec les données de l'exercice de spé (PGCD(a,b)=980 et PPCM(a,b)=49980), j'obtiens un résultat juste sur la nspire (1 et 51 puis 3 et 17) et faux (enfin, ca ne m'affiche pas tout ce que ca devrais) sur la 84+... (seulement 1 et 3, comme si ça s'arrêtait et ne continuait pas dans la boucle pour trouver les autres diviseurs
Bon, et ben voila, normalement les deux programmes devraient faire quasiment la meme chose, enfin dans le fond ca devrait être pareil, mais bon, ca ne marche pas .... Merci de m'aider :D


EDIT : PROBLEME REGLE :D
Merci ;)

Re: Spé Terminale S - Adaptation d'un programme pour Nspire.

Unread postPosted: 19 Oct 2009, 20:28
by Bisam
Tu as oublié une ligne de code dans la version 84+ !
Après la boucle for, il manque le "if...".
Mais c'est peut-être un problème de transcription sur le forum.

De plus, tu ne fais pas afficher les mêmes resultats. Il n'y a pas d'équivalent du "disp {1,apbp}" dans la version 84+.

A part ca, je ne comprends pas bien comment marche ton programme... ni meme ce que tuvoudrais qu'il renvoie (mais c'est sans doute parce que je ne suis pas en Spé Maths :p )

Re: Spé Terminale S - Adaptation d'un programme pour Nspire.

Unread postPosted: 19 Oct 2009, 20:47
by Adriweb
ah oui c'est un probleme de transcription sur le forum, en effet on doit lire :

Code: Select all
:If not(fPart(C/I
:Then
:I [-] LRES(J
:J+1 [-] J
:End


Mais bon, ca ne change rien au problème ^^Merci quand meme ;)

Donc en gros ce que je voudrais qu'il renvoie le programme ce sont les couples (dans une liste) des nombres qui vont bien avec les PGCD/PPCM fournis en input...

Sinon, au niveau de la forme du rendu, c'est pas trop les différences avec la version nspire qui comptent, mais bel et bien le fond .....

Re: Spé Terminale S - Adaptation d'un programme pour Nspire.

Unread postPosted: 19 Oct 2009, 20:52
by charognard
comprends pas tout non plus
as tu un exemple entrée / sortie

Re: Spé Terminale S - Adaptation d'un programme pour Nspire.

Unread postPosted: 19 Oct 2009, 21:03
by Adriweb
alors, voila un exemple entrée sortie sur la nspire, puisque ca marche bien :

(en fai,t l'énoncé d'un problème qui va avec :P)
Trouver a et b tel que :
PGCD(a,b)=980
PPCM(a,b)=49980

donc la sur la nspire on fait:
pgcdppcm(980,49980)
et ca nous sort donc :
Code: Select all
a' * b' = 51
{1,51}
{3,17}


Voila donc en gros ce que ca fait ...



au fait, si c'est les codes des programmes que vous comprenez pas vu qu'ils sont assez "comprimés", dites le et j'expliquerai ligne a ligne ;)

Re: Spé Terminale S - Adaptation d'un programme pour Nspire.

Unread postPosted: 19 Oct 2009, 21:09
by Adriweb
BOOOOON, enfait, l'erreur venait que dans la boucle for, j'avais mis la valeur maximum comme lavariable "L" mais il s'aggissait en fait de "Liste(L)" et non pas "L" tout seul ....

Ah la la les erreurs betes comme ca, c'est a se frapper contre un mur ^^

Bon, ben merci quand meme, mais si vous trouvez un moyen d'organiser mieux les réponses qu'avec des listes comme ca donne maintenant je suis preneur ;)

Re: Spé Terminale S - Adaptation d'un programme pour Nspire.

Unread postPosted: 19 Oct 2009, 21:27
by Bisam
En fait, en lisant le début, j'ai cru que tu cherchais à faire afficher les couples {a,b} tels que pgcd(a,b)=x et ppcm(a,b)=y... mais en fait, tu ne fais que déterminer les valeurs de a' et b' qui sont définies par a'=a/x et b'=b/x.

Pour être exact, tu ne fais d'ailleurs afficher que les valeurs de a'.
En plus, tu ne les affiches pas toutes, puisque tu rates les cas où un nombre premier apparaît avec une puissance autre que 1 dans la factorisation de a'*b'...

Re: Spé Terminale S - Adaptation d'un programme pour Nspire.

Unread postPosted: 19 Oct 2009, 21:38
by Adriweb
Bisam wrote:En fait, en lisant le début, j'ai cru que tu cherchais à faire afficher les couples {a,b} tels que pgcd(a,b)=x et ppcm(a,b)=y... mais en fait, tu ne fais que déterminer les valeurs de a' et b' qui sont définies par a'=a/x et b'=b/x.

oui, en quelques sorte ;)

enfin, maintenant, du moment que ca marche a peu pres (manque plus qu'un peu de forme pour soigner le tout), ca devrait aller :D

merci ;)

Re: Spé Terminale S - Adaptation d'un programme pour Nspire.

Unread postPosted: 20 Oct 2009, 15:27
by charognard
les maths me sont lointain
mais

Code: Select all
Trouver a et b tel que :
PGCD(a,b)=980
PPCM(a,b)=49980


pour moi a et b sont au moins = 980 et
NON ?

Re: Spé Terminale S - Adaptation d'un programme pour Nspire.

Unread postPosted: 20 Oct 2009, 16:54
by Bisam
As-tu lu ce j'ai écrit juste au-dessus, charognard ?
Il ne cherchait pas a et b (je suppose que c'est la méthode qu'on lui a apprise) mais les réduites de a et b, à savoir a et b divisés par leur pgcd.