Bonjour bonjour !
J'ai une petite question à poser à la communauté : comment transformer une chaîne en nombre dans Algobox ?
Je sais que la manip peut sembler bizarre mais... Sachant que je dois manipuler des numéros de téléphone tous contenant 10 chiffres et tous commençant pas un "0" je ne peux pas utiliser la fonction nombre cash. Mais j'en ai besoin pour pouvoir les classer et les introduire dans une liste.
Quelqu'un aurait-il une idée sur la chose ?
Merci d'avance...
c'est quoi cette fonction "nombre cash" ? dans Algobox ?
sinon il faut monter une routine avec la fonction machaine.charCodeAt(pos)
pour dépacker une chaîne de caractères, caractère par caractère.
C'est pas la fonction nombre cash !
Bref ce que je voulais dire c'est que puisque je veux afficher un nombre de téléphone 0xxxxxxxxx, je ne peux pas définir ce numéro en tant que nombre dès le départ (d'où le cash !)
Enfin, par contre là j'ai pas trop compris ce que tu me proposes...
soit la string chaine = "0473845689"
pour la transformer en nombre :
l = chaine.length - 1
nombre = 0
d = 1
tant que (l
0)
nombre = nombre + d * chaine.charCodeAt(l)
d = d * 10
l = l - 1
fin tant que
aficher numéro
Bon, j'avais déjà regardé sur Algobox, j'y suis retourné. Le pb c'est que je ne sais pas comment insérer ces fonctions dans algobox !
Dans affecter valeur à variable, il faut
saisir l'expression de la fonction.
Les commandes sur les string ne sont pas répertoriées dans la liste des commandes qui son proposées par défaut.
C'est fait mais ça bloque là : nombre = nombre + d * chaine.charCodeAt(l)
Là je comprends pas le fonctionnement de cette fonction et en plus AlgoBox me dit qu'il y a une erreur.
1 VARIABLES
2 chaines EST_DU_TYPE CHAINE
3 l EST_DU_TYPE NOMBRE
4 d EST_DU_TYPE NOMBRE
5 nbre EST_DU_TYPE NOMBRE
6 DEBUT_ALGORITHME
7 LIRE chaines
8 l PREND_LA_VALEUR chaines.length-1
9 nbre PREND_LA_VALEUR 0
10 d PREND_LA_VALEUR 1
11 TANT_QUE (l>=0) FAIRE
12 DEBUT_TANT_QUE
13 nbre PREND_LA_VALEUR nbre+d*chaines.charCodeAt(l)
14 d PREND_LA_VALEUR d*10
15 l PREND_LA_VALEUR l-1
16 FIN_TANT_QUE
17 AFFICHER nbre
18 FIN_ALGORITHME
RÉSULTATS :
***Algorithme lancé***
5.3895143e+10
***Algorithme terminé***
ok.
Le code ASCII de 0 est 48.
donc remplace :
13 nbre PREND_LA_VALEUR nbre+d*chaines.charCodeAt(l)
par
13 nbre PREND_LA_VALEUR nbre+d*(chaines.charCodeAt(l) - 48)
et teste à nouveau pour "87"
Bon ça ne marche pas mais !
Pour les chiffres de 0 à 9 ça marche, mais dès qu'on passe à deux chiffres, ça ne marche plus... Donc il prend en compte les codes ascii de tous les chiffres... je vois pas comment s'en sortir 
si, si ça marche.
ca a marché pour "87" même si le résultat était faux.
l'algorithme a bien fait : 55 + 560 = 615
là, il doit faire, après correction : 7 + 80 = 87
Est-ce que ça marche quand tu testes sur "87"
en ayant corrigé la ligne 13 en :
nbre PREND_LA_VALEUR nbre + d * (chaines.charCodeAt(l) - 48)
que te retourne l'algo ?
on t'es trompé sur tes parenthèses.
tu as du écrire : d * chaines.charCodeAt(l) - 48
c'est : d * (chaines.charCodeAt(l) - 48)
Ok bon je pense que c'est parfait
Merci beaucoup de m'avoir donné le bon raisonnement, c'est vraiment sympa
Je vais pouvoir continuer mon algorithme haha 
Vous devez être membre accéder à ce service...
Pas encore inscrit ?
1 compte par personne, multi-compte interdit !
Ou identifiez-vous :