| Décomposer une fraction |
| Auteur |
Message |
Virtual
Autorisation : Membre
Nb de messages : 5
Inscrit le : Mer 07 Déc 2011, 20:04
|
Posté le : Mer 07 Déc 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
Autorisation : Membre
Nb de messages : 3738
Inscrit le : Lun 19 Oct 2009, 21:25
|
Posté le : Mer 07 Déc 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.
---------------------- ti82statfr: 2008, inscrit: 2009, ti84pocketfr: noël2011, ti30xbmultiview: iut 2012-2014
Perfectionniste, manque tact. Pas le temps de tout publier depuis 2011. Répond toujours aux questions. (rédigé juin 2014)
Pour tout le monde et surtout les débutants, quelques-uns des articles courants :
*Traductions Algorithmie/Ti-Basic.
*Caractères spéciaux sur Tout82
Les défauts du TI-Basic : Goto_versus_algo et DelVar/End/Lbl/guillemet/store |
 |
|
| |
-Coco-
Autorisation : Membre
Nb de messages : 149
Inscrit le : Sam 28 Nov 2009, 16:09
|
Posté le : Mer 07 Déc 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
Autorisation : Membre
Nb de messages : 5
Inscrit le : Mer 07 Déc 2011, 20:04
|
Posté le : Mer 07 Déc 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
Autorisation : Membre
Nb de messages : 5
Inscrit le : Mer 07 Déc 2011, 20:04
|
Posté le : Mer 07 Déc 2011, 20:40
|
|
|
Juste une question, où ce situe "fPart(" ?
|
 |
|
| |
Google_AdSense
|
Publicité
|
|
|
|
| |
linkakro
Autorisation : Membre
Nb de messages : 3738
Inscrit le : Lun 19 Oct 2009, 21:25
|
Posté le : Mer 07 Déc 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
---------------------- ti82statfr: 2008, inscrit: 2009, ti84pocketfr: noël2011, ti30xbmultiview: iut 2012-2014
Perfectionniste, manque tact. Pas le temps de tout publier depuis 2011. Répond toujours aux questions. (rédigé juin 2014)
Pour tout le monde et surtout les débutants, quelques-uns des articles courants :
*Traductions Algorithmie/Ti-Basic.
*Caractères spéciaux sur Tout82
Les défauts du TI-Basic : Goto_versus_algo et DelVar/End/Lbl/guillemet/store |
 |
|
| |
Virtual
Autorisation : Membre
Nb de messages : 5
Inscrit le : Mer 07 Déc 2011, 20:04
|
Posté le : Mer 07 Déc 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
Autorisation : Membre
Nb de messages : 3738
Inscrit le : Lun 19 Oct 2009, 21:25
|
Posté le : Mer 07 Déc 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.
---------------------- ti82statfr: 2008, inscrit: 2009, ti84pocketfr: noël2011, ti30xbmultiview: iut 2012-2014
Perfectionniste, manque tact. Pas le temps de tout publier depuis 2011. Répond toujours aux questions. (rédigé juin 2014)
Pour tout le monde et surtout les débutants, quelques-uns des articles courants :
*Traductions Algorithmie/Ti-Basic.
*Caractères spéciaux sur Tout82
Les défauts du TI-Basic : Goto_versus_algo et DelVar/End/Lbl/guillemet/store |
 |
|
| |
Virtual
Autorisation : Membre
Nb de messages : 5
Inscrit le : Mer 07 Déc 2011, 20:04
|
Posté le : Mer 07 Déc 2011, 21:09
|
|
|
OK, je vais m'arrangé.
Merci beaucoup.
|
 |
|
| |
sandro
Autorisation : Membre
Nb de messages : 1366
Inscrit le : Ven 25 Mar 2011, 22:58
|
Posté le : Ven 09 Déc 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 |
---------------------- mort à l'inutile, place à la mémoire libre et aux programmes |
 |
|
| |