Poster un nouveau sujet Poster une réponse
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   Citer 

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. happy.gif

 Adresse email Haut de page Bas de page 
 
linkakro



Autorisation : Membre
Nb de messages : 3738
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Mer 07 Déc 2011, 20:22   Citer 

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
 Adresse email Haut de page Bas de page 
 
-Coco-



Autorisation : Membre
Nb de messages : 149
Inscrit le : Sam 28 Nov 2009, 16:09
Posté le : Mer 07 Déc 2011, 20:22   Citer 

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é

 Adresse email Haut de page Bas de page 
 
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   Citer 

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.

 Adresse email Haut de page Bas de page 
 
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   Citer 

Juste une question, où ce situe "fPart(" ?

 Adresse email Haut de page Bas de page 
 
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   Citer 

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
 Adresse email Haut de page Bas de page 
 
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   Citer 

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 ...

 Adresse email Haut de page Bas de page 
 
linkakro



Autorisation : Membre
Nb de messages : 3738
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Mer 07 Déc 2011, 21:00   Citer 

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
 Adresse email Haut de page Bas de page 
 
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   Citer 

OK, je vais m'arrangé.
Merci beaucoup.

 Adresse email Haut de page Bas de page 
 
sandro



Autorisation : Membre
Nb de messages : 1366
Inscrit le : Ven 25 Mar 2011, 22:58
Posté le : Ven 09 Déc 2011, 22:17   Citer 

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
 Adresse email Haut de page Bas de page 
 
Poster un nouveau sujet Poster une réponse





  Page générée en 6 requêtes