Page 1 of 1

[Tuto] Conversions Nombre <--> Chaine

Unread postPosted: 07 May 2013, 10:45
by Persalteas
Bonne nouvelle : si vous utilisez une TI-83 Premium CE ou TI-84 Plus CE, vous pouvez tout simplement utiliser la commande toString( (versChaîne( en Français) depuis l'OS 5.2 :)


Ce tutoriel s'applique au TI-Basic. ( source: http://tout82.free.fr/forum/sujet.php?sujet=2611 )

I. Convertir une Chaine en nombre
Si votre chaine contient une valeur calculable, c'est à dire un nombre, une expression, etc, vous pouvez facilement la récupérer dans une variable "réel" (alphabet) ou même dans Ans grâce à la commande expr().
Code: Select all
:expr(Str1→A


La commande expr() peut se trouver dans le catalogue :f21: :f101:

II. Convertir un nombre en chaine

1) Méthode optimisée

Il n'existe ici pas de commande toute faite, nous allons devoir utiliser une méthode détournée via une commande de régression linéaire qui permet de stocker une valeur dans Y1, ainsi que la fonction Equ>String() qui sert à transformer une fonction Y1 en chaine.
Malheureusement, cette méthode est gourmande puisqu'elle utilise 2 listes et une fonction Y...


Si votre valeur à stocker est dans A, et que vous la voudriez dans Str1:

Code: Select all
:{1,2}→L1
:{A,A}→L2
:LinReg(a+bx) L1,L2,Y1
:Equ>String(Y1,Str1)
:DelVar Y1
:ClrList L1,L2
:sub(Str1,1,length(Str1)-3)→Str1


Ce qui donne en version optimisée:

{1,2→G
{A,A→H
LinReg(a+bx) LG,LH,Y1
Equ>String(Y1,Str1
DelVar Y1DelVar LGDelVar LHsub(Str1,4,length(Str1)-3→Str1


J'ai remplacé ici les L1 et L2 par des listes G et H histoire de pas effacer L1 et L2 dont vous pouvez avoir besoin à d'autres endroits dans votre programme.
On ne peut malheureusement pas se passer de ces listes, la fonction réglin ayant besoin de noms de variables pour fonctionner.


2) Autre méthode
Cette seconde méthode à l'avantage de ne pas nécessiter autant de variables, et ne détruit pas l'écran graphique.
Par contre elle est plus lourde, et ne peut pas calculer des expressions.

Il s'agit de convertir manuellement chaque chiffre du nombre en chaine. Plusieurs routines peuvent se faire, celle ci gère tous les chiffres de 0 à 9, les nombres à virgule, et les négatifs.

Code: Select all
:abs(A→B
:int(log(Ans+not(Ans→C
:"+
:If A<0:"-
:For(D,-1,12
:If C=D
:Ans+".
:Ans+sub("0123456789",1+int(10fPart(B10^(D-C))),1→Str1
:End


De même, celle ci convertit la valeur stockée dans A dans la chaine Str1.

Re: [Tuto] Conversions Nombre <--> Chaine

Unread postPosted: 16 Mar 2014, 09:41
by grosged
Très intéressant tout ça :)
Astucieux de passer par LinReg ! (j'avais essayé de placer directement dans Y1... sans succès)
Il se trouve que, dans le cadre de "la suite du geek", j'ai pendant un temps réfléchi sur cette fonction de conversion nb->chaîne qui fait cruellement défaut.
Des 2 méthodes, c'est la 1ère la + rapide?

Re: [Tuto] Conversions Nombre <--> Chaine

Unread postPosted: 24 May 2014, 20:27
by Wistaro
Sympa ! ;-)

La conversion nombre/chaîne avec la régression linéaire je connaissais déjà, je m'en suis servi dans le programme de la factorielle et de la suite du geek.
En revanche pour effectuer la conversion chaîne/nombre, je passais également par les variables d'équations, et ensuite par la fonction EquString().

J'ignorais qu'une fonction été déjà prévue pour cela^^

Re: [Tuto] Conversions Nombre <--> Chaine

Unread postPosted: 10 Jun 2018, 11:51
by Alexi
Je voulais savoir si il était possible de convertir une lettre ; par exemple un "A" en nombre afin de le stocker dans une liste je voudrais ainsi enrengistrer un mot de passe d'un utilisateur et sachant qu'on peut créer des listes mais pas des chaines je suis obligé de convertir en nombre pour pouvoir stocker le mot de passe et l'identifiant dans des listes.

Merci d'avance pour vos réponses :D

Re: [Tuto] Conversions Nombre <--> Chaine

Unread postPosted: 10 Jun 2018, 13:04
by Hayleia
http://tibasicdev.wikidot.com/instring
Notamment cette partie :
Advanced Uses

You can use inString( to convert a character to a number. For example:
:inString("ABCDEFGHIJKLMNOPQRSTUVWXYZ",Str1→N

Re: [Tuto] Conversions Nombre <--> Chaine

Unread postPosted: 10 Jun 2018, 14:38
by Adriweb
J'ai rajouté un bandeau au post principal, par rapport au toString des CE...