Maison >développement back-end >C++ >Comment puis-je convertir efficacement des entiers en leurs formes écrites sans utiliser de tables de recherche ?
Éviter les tables de recherche : un algorithme efficace pour convertir des entiers en mots
La conversion d'entiers en leurs représentations verbales est une tâche de programmation courante. Même si les tables de recherche constituent une solution simple pour les petits nombres, elles deviennent lourdes pour les valeurs plus grandes. Cet article présente une méthode plus évolutive et efficace qui évite l'utilisation de grandes tables de recherche.
Le cœur de cette approche implique plusieurs tableaux :
ones
: Un tableau contenant les mots pour les nombres à un chiffre (par exemple, "Un", "Deux", ... "Neuf").teens
: Un tableau contenant les mots des nombres onze à dix-neuf.tens
: Un tableau contenant les mots pour des multiples de dix (par exemple, "Vingt", "Trente", ... "Quatre-vingt-dix").thousandsGroups
: Un tableau contenant les préfixes des milliers, des millions et des milliards.Le cœur de l'algorithme est la fonction FriendlyInteger
, une fonction récursive prenant trois paramètres :
n
: L'entier à convertir.leftDigits
: La représentation verbale des chiffres à gauche de n
(utilisée pour la récursivité).thousands
: Le groupe de milliers actuel (unités, milliers, millions, etc.).FriendlyInteger
décompose de manière récursive l'entier d'entrée, construisant la représentation du mot pièce par pièce. Par exemple, convertir 1532 :
FriendlyInteger(32, "One Thousand", 1)
: Traite les milliers de places, ce qui donne « Mille ».FriendlyInteger(32, null, 0)
: Gère les 32 restants.FriendlyInteger(2, "Thirty", 0)
: Traite le chiffre des dizaines, générant « Trente ».FriendlyInteger(0, "Two", 0)
: Gère le chiffre des unités, donnant "Deux".La fonction IntegerToWritten
sert de point d'entrée, gérant les cas particuliers comme les nombres zéro et négatifs avant d'appeler FriendlyInteger
pour la conversion principale.
Cette approche récursive, combinée à l'utilisation de tableaux prédéfinis, fournit une solution efficace et évolutive pour convertir des entiers sous leur forme écrite sans avoir besoin de tables de recherche étendues, ce qui la rend adaptée à la gestion d'un large éventail d'entrées numériques.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!