Bonjour,
existe t-il un moyen de connaitre le nombre de chiffres d'un nombre donné (algorithmiquement) sans employer une structure itérative?
merci
Version imprimable
Bonjour,
existe t-il un moyen de connaitre le nombre de chiffres d'un nombre donné (algorithmiquement) sans employer une structure itérative?
merci
Bonjour,
Sans être le plus compétent pour répondre, je dirais que sur le plan purement mathématique, le logarithme à base n (généralement 10, donc) arrondi par excès correspond à peu près à ce que tu cherches.
Pour le calculer, en revanche, je pense que tu es obligé(e) de passer par un algorithme itératif.
Pour un nombre x en base 10, il suffit de faire floor(log_10(x)) + 1
merci pour vos réponses
je dirai donc que je prends la partie entiére de log(n) et je luis rajoute un 1
mais algorithmiquement comment je précise que je prends la partie entiére d'un réel?
ou bien je définis ma variable en type entier et par conséquent cela sous-entends la partie entière du log(n)?
Bonjour,
«algorithmiquement» tu fais ce que tu veux :) Il faut juste que ce que tu utilises soit défini. Par exemple on trouve souvent dans la littérature :
⌈x⌉ partie entière par excès
⌊x⌋ partie entière par défaut (En France on trouve souvent la notation E(x))
Pour les notations des log on retrouve souvent (quand il s'agit de les différencier)
log = logarithme en base 10
ln = logarithme naturel, base e
lg = logarithme binaire, base 2
Ton algo pourrait bien s'écrire :
ouCode:
1
2 nbre chiffre( n: entier ) : entier renvoyer E(log10(n))+1
Ce n'est qu'une question de convention, de style aussi. Par exemple dans le premier algo je suppose qu'on assume que le paramètre ne sera jamais 0 et que pour les deux algos on assume que l'entier est toujours positif ....Code:
1
2
3
4
5
6
7
8
9
10 function decimal_digit_count in : integer x out : integer begin if x = 0 then decimal_digit_count := 1 else decimal_digit_count := 1 + ⌊log x⌋ end if end
Ensuite pour l'implémentation, en C il faudra utiliser log10, floor, transformer en int ... alors que dans un autre langage il faudra faire d'autres manipulations (peut-être y aura-t-il même une fonction prédéfinie ... qui sait ?)
merci :ccool: