Poster un nouveau sujet Poster une réponse
DM sur les fractions égyptiennes
Auteur Message
francis



Autorisation : Membre
Nb de messages : 10
Inscrit le : Dim 05 Jan 2014, 11:27
Posté le : Dim 05 Jan 2014, 11:31   Citer 

Bonjour,
Suite a un DM sur lequel je bloque depuis une semaine a cause d'un seul mot angry.gif , qui sait comment écrire " arrondi supérieur " en language ti-82 ?
Merci d'avance.

 Adresse email Haut de page Bas de page 
 
linkakro



Autorisation : Membre
Nb de messages : 3767
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Dim 05 Jan 2014, 11:50   Citer 

Quand tu n'as pas une fonction pour le faire, tu dois le faire avec des conditions ou des astuces mathématiques.

La calculatrice TI 82 dispose de trois manières d'arrondir bien que ce vocabulaire "arrondir" soit faux.
-round(X,N) pour arrondir x à n décimales, en respectant la comparaison à 5.
-int(X) pour réduire à l'entier inférieur ou égal
-iPart(X) pour tronquer
Note que int et iPart ne sont pas équivalents dans le domaine négatif.

Tu n'as pas dis explicitement si tes nombres sont positifs.
"arrondi suppérieur" est ambigu car cela ne fait pas la différence entre troncature, excès et réduction.
EDIT : Je traite l'arrondi par excès.

Je te conseille d'utiliser int puis d'incrémenter si le nombre n'était pas déjà entier. Cela fonctionne dans tous les réels.

Code
int(X->I
If X-I // X différent de I
I+1->I
//


Astuce mathématique (proposée par m@thieu41 ailleurs) : rendre le nombre négatif, réduire à l'inférieur, puis rendre positif. Ne fonctionne bien sûr que si le nombre de départ est positif. EDIT : car on obtiendrait le nombre algébriquement suppérieur, pas l'arrondi par excès.
Code
-int(-X->I



----------------------
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 
 
m@thieu41



Autorisation : Membre
Nb de messages : 856
Inscrit le : Mer 18 Juil 2012, 18:44
Posté le : Dim 05 Jan 2014, 11:51   Citer 

Bonjour,

("Langage ti82" c'est un peu flou : il s'agit du ti basic, mais attention au modèle (ti82 ce n'est pas la même chose que ti82stats) ).

Un arrondi "standard" est simple à faire (avec la fonction round(nombre,précision) ). (arrondi sur ti82stats.fr)
Une troncature se fait avec iPart (ent sur une ti82stats.fr).

Pour arrondir par excès il faut ruser:
Soit A le nombre à arrondir

Code
sur 82: -int -A
sur 82stats: -int(-A
sur 82stats.fr: -PartEnt(-A


int/partEnt se trouve dans le menu MATH, onglet NUM
- c'est celui à côté du point.

Explications:
int(nombre) donne le premier entier inférieur ou égal au nombre passé en argument.
(tu peux t'en servir pour arrondir par défaut un nombre)
int(5.5) = 5
int(-5.5) = 6
int(6) = 6

Donc en prenant l'entier inférieur ou égal à l'opposé du nombre, c'est comme si on prenait l'opposé de l'arrondi du nombre.
Ex: int(-5.5) = -6
et si on arrondi 5.5 par excès on obtient 6.
int(5.5) = 5
et si on arrondi -5.5 par excès on obtient -5.

Donc -int(-nombre) donne bien l'arrondi par excès de nombre.

J'espère ne pas t'avoir embrouillé avec mes explications, demande s'il y a des points à éclaircir happy.gif


EDIT: Linka a posté avant moi, mais l'astuce marche aussi pour les nombres négatifs.

----------------------
Pour vous aidez dans vos débuts (et même ensuite ^^) :
*Tuto Algo->Ti Basic (par Linkakro) : Traduisez vos algo (de type algobox) en prgm pour votre TI!
*Catalogue des emplacements et traductions (anglais/français) des fonctions sur la TI.
*Faites vos propres programmes de maths (par ash)

Et au fait: la politesse n'a jamais tué personne winkle.gif
 Adresse email Haut de page Bas de page 
 
francis



Autorisation : Membre
Nb de messages : 10
Inscrit le : Dim 05 Jan 2014, 11:27
Posté le : Dim 05 Jan 2014, 11:55   Citer 

Merci . Que veut dire ton // car je ne comprend pas ^^

 Adresse email Haut de page Bas de page 
 
m@thieu41



Autorisation : Membre
Nb de messages : 856
Inscrit le : Mer 18 Juil 2012, 18:44
Posté le : Dim 05 Jan 2014, 11:57   Citer 

C'est juste pour indiquer qu'il y a des commentaires après (c'est une convention dans de nombreux langages, mais pas en ti-basic, bien qu'on s'en serve souvent dans les codes qu'on poste sur le forum).
Je supprime si ça te gène.

----------------------
Pour vous aidez dans vos débuts (et même ensuite ^^) :
*Tuto Algo->Ti Basic (par Linkakro) : Traduisez vos algo (de type algobox) en prgm pour votre TI!
*Catalogue des emplacements et traductions (anglais/français) des fonctions sur la TI.
*Faites vos propres programmes de maths (par ash)

Et au fait: la politesse n'a jamais tué personne winkle.gif
 Adresse email Haut de page Bas de page 
 
francis



Autorisation : Membre
Nb de messages : 10
Inscrit le : Dim 05 Jan 2014, 11:27
Posté le : Dim 05 Jan 2014, 11:58   Citer 

D'accord happy.gif Je revient d'ici une demi-heure pourvoir le résultat et vous tenir au courant :p

 Adresse email Haut de page Bas de page 
 
linkakro



Autorisation : Membre
Nb de messages : 3767
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Dim 05 Jan 2014, 12:06   Citer 

Source qu'on aurait pu signaler.
http://tout82.free.fr/forum/sujet.php?sujet=2317

Je maintien que l'opposition de signe des nombres négatifs pose un problème.
Cela donne le nombre algébriquement suppérieur mais pas l'arrondi par excès de la valeur absolue.
C'est l'expression "arrondi suppérieur" qui porte à confusion.
"arrondi par excès" est différent de "arrondi au nombre entier algébriquement suppérieur".
-int(-2.6=3
-int(--2.6=-2

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



Autorisation : Membre
Nb de messages : 10
Inscrit le : Dim 05 Jan 2014, 11:27
Posté le : Dim 05 Jan 2014, 12:07   Citer 

Nouveau problème --' Quand je fait tourner mon algorithme, je rentre mes nombres A et B de départ et a la fin on doit m'afficher un nombre P mais quand je l'exécute, Il me dit juste Fait et ne m'affiche rien . Qui a une solution pour moi ? ahh.gif

 Adresse email Haut de page Bas de page 
 
linkakro



Autorisation : Membre
Nb de messages : 3767
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Dim 05 Jan 2014, 12:13   Citer 

Il faut commander l'affichage avec Disp, Pause, Output() ou Text().
Ce serait automatique si l'expression à afficher était sur la dernière commande du programme.

Code
Disp P



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



Autorisation : Membre
Nb de messages : 10
Inscrit le : Dim 05 Jan 2014, 11:27
Posté le : Dim 05 Jan 2014, 12:30   Citer 

C'est bien ce que j'ai fait et cela m'affiche 1 .
En fait il faut écrire un algorithme pour démontrer que la fraction 11/12 s'écrit en fraction égyptiennes : 1/2 + 1/3 + 1/12 .
On nous donne :
- A partir d'une fraction a/b < 1 , déterminer le plus petit entier p tel que p > ou = b/a
Mémoriser p ( donc dans la calculette je ne sais pas comment le retenir ou le mémoriser )
- Calculer a/b - 1/p . Si cette fraction vaut 0, passez a l'étape 3 ; Sinon reprendre du début avec la. nouvelle fraction obtenu .
- On écrit la décomposition de a/b en la somme des inverses de tous les entiers p mémorisés .
Voilà --' Help ! Merci a ceux qui consacreront leurs temps a ce problême happy.gif

 Adresse email Haut de page Bas de page 
 
Google_AdSense



Publicité    



 
linkakro



Autorisation : Membre
Nb de messages : 3767
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Dim 05 Jan 2014, 13:58   Citer 

a/b<1 <=> a<b donc on peut simplifier l'écriture de la condition.
Je réaliserai cette vérification avec une boucle.
Je vérifierai aussi que les nombres sont entiers et strictement positifs.
Tu peux enlever cette boucle si tu respectes les conditions en effectuant la saisie.

Trouver P est déjà résolu. Et on peut même utiliser une boucle pour se rapprocher de la phrase.

Tu considères plusieurs P. Tu dois donc les stocker quelque part où tu pourras les différencier. Le TI-Basic n'a que des variables globales donc tu devras utiliser une variable à plusieurs champs comme une liste.
Ou bien on évite de tout conserver et on affiche au fur et à mesure.
Je préfère stocker dans une liste et afficher une seule fois à la fin.

Je ne gérerai pas de dimension des listes pour faire plus simple, car affecter le prochain terme incrémente la taille en même temps.

Tu peux stocker des nombres réels et afficher en fraction (ou plutôt essayer) avec >Frac.


Code
ClrList L1
Repeat A<B and A>0 and B>0 and not(fPart(A)) and not(fPart(B
Prompt A,B
End
A/B->F
0->N
While F  // tant que F est non-nul (vrai la première fois)
-int(-1/F->P  // excès de b/a
F-1/P->F
N+1->N
P->L1(N
End
Pause 1/L1>Frac

La pause permet de défiler avec les flèches quand cela dépasse de l'écran.

Comme c'est à la fin, on peut enlever la pause : les défilements fonctionneront tant qu'on n'aura pas fait autre chose, et il n'y a pas besoin de valider avec Entrer.

Je conseille aussi d'afficher seulement L1 en tant que dénominateur.
Pause L1

-----

Je n'ai pas confiance en les calculs récurrents sur un nombre réél.
(par contre à l'affichage final cela est bien pratique)

Je réduis au même dénominateur moi-même a/b-1/p et je conserve a et b séparément dans des listes.

a/b-1/p=(ap-b)/(bp)
En considérant des suites, a(n+1)=a(n)*p(n)-b(n) et b(n+1)=b(n)*p(n)

Puis il suffit de vérifier que A est nul pour savoir si la fraction est nulle.


Code
ClrList L1
Repeat A<B and A>0 and B>0 and not(fPart(A)) and not(fPart(B
Prompt A,B
End
0->N
While A  // tant que A est non-nul (vrai la première fois)
-int(-B/A->P
AP-B->A
BP->B
N+1->N
P->L1(N
End
Pause 1/L1>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 
 
francis



Autorisation : Membre
Nb de messages : 10
Inscrit le : Dim 05 Jan 2014, 11:27
Posté le : Dim 05 Jan 2014, 16:19   Citer 

Merci beaucoup j'essaye de le faire en language ti82 stats-fr

 Adresse email Haut de page Bas de page 
 
francis



Autorisation : Membre
Nb de messages : 10
Inscrit le : Dim 05 Jan 2014, 11:27
Posté le : Dim 05 Jan 2014, 16:28   Citer 

Mais quand affiche t on P ?

 Adresse email Haut de page Bas de page 
 
Google_AdSense



Publicité    



 
francis



Autorisation : Membre
Nb de messages : 10
Inscrit le : Dim 05 Jan 2014, 11:27
Posté le : Dim 05 Jan 2014, 16:38   Citer 

Je n'y arrive pas --' Pouvez vous traduire cet algorithme en langage TI-82 Stats.fr ?

 Adresse email Haut de page Bas de page 
 
m@thieu41



Autorisation : Membre
Nb de messages : 856
Inscrit le : Mer 18 Juil 2012, 18:44
Posté le : Dim 05 Jan 2014, 16:43   Citer 

Le langage est le même (Ti basic).
Pour voir la correspondance des fonctions, tu peux regarder ici: http://tout82.forumactif.org/t151-catalogue-du-ti-basic-z80
ClrList = EffListes
fPart = partDéc

On affiche toutes les fractions à la fin:
Pause 1/L1>Frac
Toutes les valeurs de P sont dans L1, donc en affichant 1/L1 sous forme de fraction, on affiche toutes les fractions.

----------------------
Pour vous aidez dans vos débuts (et même ensuite ^^) :
*Tuto Algo->Ti Basic (par Linkakro) : Traduisez vos algo (de type algobox) en prgm pour votre TI!
*Catalogue des emplacements et traductions (anglais/français) des fonctions sur la TI.
*Faites vos propres programmes de maths (par ash)

Et au fait: la politesse n'a jamais tué personne winkle.gif
 Adresse email Haut de page Bas de page 
 
francis



Autorisation : Membre
Nb de messages : 10
Inscrit le : Dim 05 Jan 2014, 11:27
Posté le : Dim 05 Jan 2014, 16:58   Citer 

Et ou est efflistes ?

 Adresse email Haut de page Bas de page 
 
linkakro



Autorisation : Membre
Nb de messages : 3767
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Dim 05 Jan 2014, 18:11   Citer 

Désormais indique ton modèle exact dès le début des discussions. Ainsi on pourra écrire les codes directement dans ta langue.
J'ai supposé que tu avais une Ti82stats, mais j'aurais pu en rester à Ti82 et ce serait pire.

Le catalogue de ma signature et que m@thieu41 t'a donné montre les emplacements. Et toutes les fonctions sont dans le catalogue. les variables sont sur le clavier ou dans le menu var.
ClrList=EffListe se trouve dans stat+4 (pour tous les modèles de 82 à 84plusCSE)
Sâche que L1 est la liste saisie par 2nde+1.

Je viens à peine de supprimmer dans mon code L2 qui ne sert à rien et corrigé un commentaire qui désignait A au lieu de F.

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



Autorisation : Membre
Nb de messages : 10
Inscrit le : Dim 05 Jan 2014, 11:27
Posté le : Dim 05 Jan 2014, 22:43   Citer 

Ouf je viens enfin de réussir a le taper et tourne a merveille happy.gif Yes !
Encore merci happy.gif Affaire résolu ! beer.gif

 Adresse email Haut de page Bas de page 
 
Poster un nouveau sujet Poster une réponse





  Powered by Fire-Soft-Board v1.0.10 © 2004 - 2024 Groupe FSB
Page générée en 9 requêtes
BlackOne par Grimmlink