aide pour algo : nombre de chiffres dans un nombre - Algo - Programmation
Marsh Posté le 01-12-2012 à 15:53:13
En faisant une division par la base, si c'est un entier.
Si c'est un alphanumérique, c'est c'est pas la même technique ou pas.
Marsh Posté le 01-12-2012 à 16:17:32
ReplyMarsh Posté le 01-12-2012 à 16:19:28
Belgique007 a écrit : Oui, le code est un entier. Comment on fait une division par la base ? |
Avec beaucoup d'amour.
Tiens avec Ada, ça donne ceci :
Code :
|
Marsh Posté le 01-12-2012 à 17:57:50
Merci beaucoup, mais en faite j'ai jamais utilisé Ada donc j'ai un peu du mal à suivre ton développement...
Marsh Posté le 01-12-2012 à 18:12:48
Une version 'fonctionnelle' utilisant la tail-récursion.
Je suppose la base positive non nulle (sinon cela n'a pas de sens).
nombre_chiffre_base(nombre, base)
retourner nombre_chiffre_base_récursif(abs(nombre), base, 0)
nombre_chiffre_base_récursif(nombre, base, i)
si nombre < base retourner i+1
retourner nombre_chiffre_base_récursif(div(nombre, base), base, i+1)
ou abs est la valeur absolue et div la division entière.
A+,
Marsh Posté le 01-12-2012 à 18:31:07
gilou a écrit : Une version 'fonctionnelle' utilisant la tail-récursion. |
Strictement supérieure à 1, sinon cela n'a pas de sens !
Sinon, le nombre de chiffres d'un nombre (N >= 1) en base n (> 1) est égal à 1+E(logn(N)) où E est la partie entière et logn le logarithme en base N ( par définition, logn(x) = log(x)/log(n)). Cela peut s'étendre aux nombres (>= 1) et bases réelles ( > 1) en ne considérant que la partie entière de l'écriture du nombre.
Par ailleurs, dans le cas qui vous intéresse, ne serait-il pas plus simple de compter le nombre de caractères saisis (si saisie sous forme de texte) ou le nombre d'appuis sur les boutons (si saisie sous forme de clavier affiché à l'écran) ?
Marsh Posté le 01-12-2012 à 20:54:54
Farian a écrit : |
euh si, la base 1 a un sens, mais on ne peut pas y exprimer le zéro et les nombres négatifs. 1 y vaut 1, 2 11, 3 111 etc. Le principe des petits bâtons alignés les uns à côté des autres.
Bon, je n'avais bien sur pas ça en tête dans l'algo de ma réponse précédente.
A+,
Marsh Posté le 01-12-2012 à 21:21:18
Farian a écrit : |
Avec le code de Gilou ça donne ceci, avec le miens également certainement.
~$ ./main |
Marsh Posté le 01-12-2012 à 21:26:41
D'ailleur, je voulais dire que j'ai modifier ton code Gilou.
Code :
|
Comme tu peux le voir, on attend pas Nombre en paramètre de Nombre_Chiffres_Base, mais Chiffres.
Marsh Posté le 02-12-2012 à 12:40:56
Si les zéros devant sont significatifs, cela signifie donc qu'on se tape complètement de la base, et qu'en fait, on fait juste un comptage du nombre de caractères entrés. Et ça, ça se trouve avec les fonctions des librairies, la longueur d'une chaine exprimée en nombre de caractères, avec strlen en C par exemple.
A+,
Marsh Posté le 01-12-2012 à 15:22:27
Bonjour,
Je suis occupé à écrire un algorithme. Dans celui-ci, je demande à l'utilisateur d'insérer un code. Une fois le code inséré, comment connaître le nombre de chiffres dont il est composé sans devoir le demander à l'utilisateur ?
Merci pour votre aide !
Message édité par Belgique007 le 01-12-2012 à 15:41:40