[CASIO] Longueur d'une variable

ImJDK Messages postés 37 Date d'inscription   Statut Membre Dernière intervention   -  
ImJDK Messages postés 37 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

J'aimerais savoir si il existe une fonction qui retourner la longueur d'une variable, par exemple 12 retournerais 2 (1 et 2) ou 562 retournerais 3 ainsi de suite.

Si cette fonction n'existe pas, comment est-il possible de la programmer ? (En BASIC)


merci d'avance

4 réponses

totoyo47 Messages postés 260 Date d'inscription   Statut Membre Dernière intervention   134
 
Je complète le message de Quent217 en proposant cet algo qui prend en compte les valeurs nulle et négatives :
1+Int (log(Abs A+(A=0)))
1
quent217 Messages postés 420 Date d'inscription   Statut Membre Dernière intervention   347
 
Tout dépend de si on compte le nombre de caractères où uniquement le nombre de chiffres.
Si on veut compter le - pour les nombres négatifs la formule est :
1+int(log(abs A+(A=0)))+(A<0)

--
0
totoyo47 Messages postés 260 Date d'inscription   Statut Membre Dernière intervention   134
 
ImJDK n'a rien précisé à sujet, tout comme les nombres à virgule ;)
0
Utilisateur anonyme
 
je peut te donner un algo , mais je ne connais pas le basic:

ici ton nombre sera nommé "var".


bool notfinished=true;
int i=0;
int count=0;
while(notfinished){
if( ! var/10^i > 0){
notfinished=false
i--;
}
i++;
}
return i;



if( ! var/10^i > 0){ => si la variable divisée par 10 puissance i renvoie plus de 0, ca veut dire que la chaine fait au moins i caractères. tu ne rentre dans ce if que si le resultat de ce calcul est ifnérieur a 0 (=> tu est allé trop haut)
note que 10 puissance 0 est égal a 1.

je te laisse traduire ca en basic !
0
quent217 Messages postés 420 Date d'inscription   Statut Membre Dernière intervention   347
 
il n'existe aucune fonction sur casio pour le faire.
tu peux utiliser l'algo donné par dudu3838 ou tout simplement faire int (log N)+1 :)
Par contre dans les deux cas ca marche uniquement pour les entier positifs (pour les négatif il suffit d'ajouter 1 mais pour les décimaux je n'ai pas encore trouvé de formule pour le faire)

--
0
ImJDK Messages postés 37 Date d'inscription   Statut Membre Dernière intervention   2
 
Après une petite demi heure d'expérimentation j'ai trouvé un code fonctionnel (enfin à priori ^^)

12.345->A
0->D
Intg A->B
Frac A->C
While Intg B>0
B/10->
Isz D
WhileEnd
While Frac C>0
10C->C
Isz D
WhileEnd


juste à incrémenter D à la fin ou à faire 1->D au début pour prendre en compte la virgule
0