[CASIO] Longueur d'une variable
Fermé
ImJDK
Messages postés
37
Date d'inscription
mardi 6 octobre 2015
Statut
Membre
Dernière intervention
5 août 2016
-
2 déc. 2015 à 16:24
ImJDK Messages postés 37 Date d'inscription mardi 6 octobre 2015 Statut Membre Dernière intervention 5 août 2016 - 3 déc. 2015 à 23:04
ImJDK Messages postés 37 Date d'inscription mardi 6 octobre 2015 Statut Membre Dernière intervention 5 août 2016 - 3 déc. 2015 à 23:04
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
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
A voir également:
- [CASIO] Longueur d'une variable
- Mesurer longueur avec telephone - Guide
- Comment éteindre une calculatrice casio ✓ - Forum Matériel & Système
- Casio wr50m mode d'emploi - Forum Accessoires & objets connectés
- Calculatrice casio fx-92 - Forum Matériel & Système
- Calculatrice casio fx-92 spéciale collège ✓ - Forum calculatrices
4 réponses
totoyo47
Messages postés
260
Date d'inscription
vendredi 10 juillet 2009
Statut
Membre
Dernière intervention
30 mars 2020
134
3 déc. 2015 à 18:28
3 déc. 2015 à 18:28
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)))
Utilisateur anonyme
2 déc. 2015 à 16:47
2 déc. 2015 à 16:47
je peut te donner un algo , mais je ne connais pas le basic:
ici ton nombre sera nommé "var".
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 !
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 !
quent217
Messages postés
420
Date d'inscription
vendredi 25 septembre 2015
Statut
Membre
Dernière intervention
1 mars 2024
347
2 déc. 2015 à 20:28
2 déc. 2015 à 20:28
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)
--
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)
--
ImJDK
Messages postés
37
Date d'inscription
mardi 6 octobre 2015
Statut
Membre
Dernière intervention
5 août 2016
2
Modifié par ImJDK le 3/12/2015 à 23:06
Modifié par ImJDK le 3/12/2015 à 23:06
Après une petite demi heure d'expérimentation j'ai trouvé un code fonctionnel (enfin à priori ^^)
juste à incrémenter D à la fin ou à faire 1->D au début pour prendre en compte la virgule
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
3 déc. 2015 à 18:42
Si on veut compter le - pour les nombres négatifs la formule est :
1+int(log(abs A+(A=0)))+(A<0)
--
3 déc. 2015 à 20:30