Masar
Masar
Bac Tunisie
Entraîner la reconnaissance
RA-EAlgorithmes récurrents et arithmétiques

Comptage des chiffres d'un entier (trace + rôle + conversion)

Idée directrice

Forme calquée sur l'exercice 2 de 2019 : séquence `Tant que (x Div 10 ≠ 0)`, trace pour trois valeurs, rôle (nombre de chiffres en base décimale), puis séquence équivalente par conversion `Convch` + `Long`. C'est l'exercice court arithmétique attesté ; pas un problème modulaire.

Signature de reconnaissance — l'énoncé se trahit ainsi

« Compléter le tableau nb pour x ∈ {5403, 176, 3} » ; « Donner le rôle (nombre de chiffres) » ; « séquence équivalente sans structure itérative (Convch + Long) »

Sujet principal

Exercice — nombre de chiffres d'un entier

3 questionsCorrigé masqué

Soit `x` un entier naturel écrit en base décimale. On exécute la séquence algorithmique suivante :

```
nb ← 1
Tant que (x Div 10 ≠ 0) faire
nb ← nb + 1
x ← x Div 10
Fin tant que
```

  1. Pour chacune des valeurs de `x` parmi 5403, 176 et 3, indiquer la valeur finale de `nb` après exécution de la séquence (en repartant à chaque fois de la valeur initiale de `x`).
  2. Donner le rôle de cette séquence.
  3. Écrire une séquence algorithmique équivalente sans boucle, en utilisant la conversion de l'entier décimal en chaîne de caractères (`Convch`) puis `Long`.
Voir la correction commentéeAprès avoir posé votre démarche

1. Valeurs finales de nb

| x | nb |
|---|----|
| 5403 | 4 |
| 176 | 3 |
| 3 | 1 |

Trace sommaire pour `x = 5403` : `nb=1` puis divisions successives `5403 → 540 → 54 → 5` ; à chaque quotient non nul on incrémente `nb`, d'où `nb = 4`. Pour `x = 3`, `3 Div 10 = 0` dès le test : la boucle ne s'exécute pas, `nb` reste 1.

2. Rôle. Cette séquence permet de déterminer le nombre de chiffres d'un entier `x` donné (écriture en base décimale).

3. Séquence équivalente sans boucle

```
Convch(x, xch)
nb ← Long(xch)
```

On convertit l'entier en chaîne, puis on prend la longueur de cette chaîne : c'est le nombre de chiffres. Toute solution correcte fondée sur la même idée de conversion est acceptable.

Méthode / Automatismes
  • Relancer la séquence à part pour chaque valeur de `x` (ne pas enchaîner les trois sur la même variable).
  • Le cas `x < 10` fixe `nb = 1` sans entrer dans la boucle.
  • Équivalent non itératif officiel 2019 : `Convch` puis `Long`.
Pièges classiques

Compter une itération de trop pour les puissances de 10 ; écrire `x MOD 10` au lieu de `x Div 10` ; oublier que pour `x = 3` on a `nb = 1`.