Inscription / Connexion Nouveau Sujet
Niveau terminale
Partager :

Algorithmique sous AlgoBox

Posté par
modulox
12-04-12 à 14:44

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

Posté par
pgeod
re : Algorithmique sous AlgoBox 12-04-12 à 14:56

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.

Posté par
modulox
re : Algorithmique sous AlgoBox 12-04-12 à 14:58

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

Posté par
pgeod
re : Algorithmique sous AlgoBox 12-04-12 à 15:08

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


Posté par
modulox
re : Algorithmique sous AlgoBox 12-04-12 à 15:08

?

Posté par
modulox
re : Algorithmique sous AlgoBox 12-04-12 à 15:09

Ca marche sous algobox ça ? Bref je vais essayer... Merci !!

Posté par
modulox
re : Algorithmique sous AlgoBox 12-04-12 à 15:10

Juste ça veut dire quoi : "l = chaine.length - 1" ?

Posté par
modulox
re : Algorithmique sous AlgoBox 12-04-12 à 15:11

et "chaine.charCodeAt(l)" ?

Posté par
pgeod
re : Algorithmique sous AlgoBox 12-04-12 à 15:17

Va voir un peu l'Aide sous Algobox, paragraphe opérations sur les chaines :

Et puis on en reparle.

Posté par
modulox
re : Algorithmique sous AlgoBox 12-04-12 à 15:26

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 !

Posté par
modulox
re : Algorithmique sous AlgoBox 12-04-12 à 15:35

Parce que là ça marche pas...

Posté par
pgeod
re : Algorithmique sous AlgoBox 12-04-12 à 15:44

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.

Posté par
modulox
re : Algorithmique sous AlgoBox 12-04-12 à 15:51

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.

Posté par
pgeod
re : Algorithmique sous AlgoBox 12-04-12 à 15:53

Comment as-tu appelé ta variable chaine de caractères
dans laquelle tu stockes "0473845689" ?

Posté par
modulox
re : Algorithmique sous AlgoBox 12-04-12 à 15:56

Ok j'ai tout rentré, ça marche mais au final... il ne m'affiche pas ce que je demande

Posté par
modulox
re : Algorithmique sous AlgoBox 12-04-12 à 15:58

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é***

Posté par
modulox
re : Algorithmique sous AlgoBox 12-04-12 à 15:59

sachant que j'ai rentré comme numéro : 0561809187

Posté par
pgeod
re : Algorithmique sous AlgoBox 12-04-12 à 16:10

test en rentrant simplement chaines = "87"

Posté par
modulox
re : Algorithmique sous AlgoBox 12-04-12 à 16:12

Ca me donne 615 !

Posté par
pgeod
re : Algorithmique sous AlgoBox 12-04-12 à 16:20

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"

Posté par
modulox
re : Algorithmique sous AlgoBox 12-04-12 à 16:27

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

Posté par
pgeod
re : Algorithmique sous AlgoBox 12-04-12 à 16:31

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

Posté par
modulox
re : Algorithmique sous AlgoBox 12-04-12 à 16:38

Mais comment on doit faire pour retrouver le vrai numéro ? Je ne comprends pas ... :/

Posté par
pgeod
re : Algorithmique sous AlgoBox 12-04-12 à 16:40

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 ?

Posté par
pgeod
re : Algorithmique sous AlgoBox 12-04-12 à 16:54

Alors ? tu fais la sieste ?

Posté par
modulox
re : Algorithmique sous AlgoBox 12-04-12 à 17:27

Ahah non mais on m'a pris l'ordi
Bref en testant 87 avec les modifications, je trouve : 519

Posté par
pgeod
re : Algorithmique sous AlgoBox 12-04-12 à 17:33

on t'es trompé sur tes parenthèses.
tu as du écrire : d * chaines.charCodeAt(l) - 48
c'est : d * (chaines.charCodeAt(l) - 48)

Posté par
modulox
re : Algorithmique sous AlgoBox 12-04-12 à 17:37

SUUUUPER ça marche
Par contre quand je rentre un numéro...0561939897 j'ai : 5.619399e+8

Posté par
pgeod
re : Algorithmique sous AlgoBox 12-04-12 à 17:43

c'est parce qu'à l'affichage,
Algobox t'affiche la variable en notation scientifique.

Posté par
modulox
re : Algorithmique sous AlgoBox 12-04-12 à 17:45

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

Posté par
pgeod
re : Algorithmique sous AlgoBox 12-04-12 à 17:47



Vous devez être membre accéder à ce service...

Pas encore inscrit ?

1 compte par personne, multi-compte interdit !

Ou identifiez-vous :


Rester sur la page

Inscription gratuite

Fiches en rapport

parmi 1769 fiches de maths

Désolé, votre version d'Internet Explorer est plus que périmée ! Merci de le mettre à jour ou de télécharger Firefox ou Google Chrome pour utiliser le site. Votre ordinateur vous remerciera !