Avertissement :Il s'agit d'une page optimisée pour la navigation mobile. Voir la
page originale.
Décomposer une fraction
Virtual le 07/12/2011 à 20:12
Bonjour,
J'aimerais savoir si il était possible de décomposer une fraction sut TI-82 Stats.fr.
Je m'explique: De mon programme sort une fraction contenue dans une variable. Mais j'aimerais que cette fraction soit décomposée de telle sorte que le dénominateur soit dans une variable et le nominateur dans une autre.
Si cela est possible pouvez vous me fournir le code.

linkakro le 07/12/2011 à 20:22
Ce n'est pas prévu mais un crible permet de le résoudre.
Code
Prompt A
DelVar W
Repeat not(fPart(AW
W+1->W
End
AW->B // numérateur
W->C // dénominateur
Pour consulter mais pas stocker utilise A>FRAC.
-Coco- le 07/12/2011 à 20:22
Je ne crois pas que cela soit possible par défaut (peut être me trompe-je).
Cependant tu peux faire un programme de gros bourrin qui fait ça.
Du genre :
Code
:Prompt A //ou input, ou rien du tout si A existe déjà, mais A est ton nombre
:For(B,1,9e99
:If not(PartDéc(A*B
:Then
:A*B[sto>]A
:return
:End
:End
Ce petit morceau de code te fait rentrer la variable A, cherche s'il y a un multiple qui donne un nombre entier, et si c'est le cas ça stocke le numérateur dans A, et le dénominateur dans B
Bon c'est terriblement affreux, mais enfin ça fonctionne (je te le déconseille si t'es pas sûr que ton nombre soit posable sous forme fractionnaire, et si le dénominateur n'est pas trop grand)
Après tu peux utiliser une super technique qui marche super bien, et qui est ultra optimisée :
Tu fais
Nombre>Frac //ça te donne la fraction
Numérateur[sto>]A
Dénominateur[sto>]B
Et le tout sans aucun programme, directement depuis l'écran normal de la calculatrice !
EDIT : Bon, y'a eu quelqu'un de plus rapide que moi et son code, bien qu'il fasse la même chose, est plus optimisé
Virtual le 07/12/2011 à 20:27
Je voulais décomposer la fraction en 2 variable pour une question d'affichage, afficher séparément nominateur et dénominateur.
Je vais tester ton code linkakro.
En tout cas merci de la réponse rapide.Virtual le 07/12/2011 à 20:40
Juste une question, où ce situe "fPart(" ?linkakro le 07/12/2011 à 20:44
fPart=partDéc dans le menu maths. Cela se voit en comparant le programme de -Coco- et le mien.
catalogue des fonctions Virtual le 07/12/2011 à 20:51
Merci.
Le programme fonctionne. Il y a juste une petite erreur, quand le numérateur est égale à 1 , B et C sont doublées (1/9 ressort 2 et 18 ), mais c'est arrangeable avec une condition.
EDIT: C'est a priori que avec 1/9 le problème ...linkakro le 07/12/2011 à 21:00
La raison est plus vicieuse que cela.
La calculatrice peut commettre des erreurs d'arrondits.
Tu as constaté un cas où la calculatrice trouve tardivement mais il arrive qu'elle ne trouve pas du tout.
Un moyen souvent correct mais parfois défectueux est d'arrondir au lieu de tronquer.
not(fPart(AW)) devient AW=round(AW,9)
avec 9 qu'on peut modifier selon les besoins.Virtual le 07/12/2011 à 21:09
OK, je vais m'arrangé.
Merci beaucoup.sandro le 09/12/2011 à 22:17
sinon, j'en ai un autre, qui est (si c'est bien le bon) assez performant, mais un peu lent quand il ne rouve pas:
Code
Prompt A
If not(round(fPart(A),9
Then
A -> U
1 -> V
Else
{0 -> L1
EffVar BWhile round(fPart(A),9) and B<50
B+1 -> B
iPart(A -> L1(B
(A-L1(B))^-1 -> A //remplacer ^-1 par le symbole inverse
End
iPart(A -> L1(B+1
dim(L1 -> D
L1(D-1 ->W
1 -> U
L1(D -> V
While 2[inférieur ou égal]D
If U<E12 and V<E12 //les E des puissances de 10
Then
gcd(U,V)^-1 -> R //remplacer ^-1 par la fonction inverse; gcd(=pgcd(
UR -> U
VR -> V
End
L1(D-1 -> W
U+WV -> Q
V -> U
Q -> V
D-1 -> D
End
End
Disp V,U
Avertissement :Il s'agit d'une page optimisée pour la navigation mobile. Voir la
page originale.