Guest User

Untitled

a guest
Jun 19th, 2018
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.27 KB | None | 0 0
  1. <!DOCTYPE html>
  2.  
  3. <html>
  4.  
  5. <head>
  6. <title>Numbers to letters</title>
  7. </head>
  8.  
  9.  
  10. <body>
  11. <h1>Numbers to letters</h1>
  12. </body>
  13.  
  14. <script>
  15. let userEntry;
  16.  
  17. while ((userEntry = prompt("Renseignez un chiffre entre 0 et 999"))) {
  18. alert(num2Letters(parseInt(userEntry, 10)));
  19. }
  20.  
  21. function num2Letters(number) {
  22. if (isNaN(number) || number < 0 || number > 999) {
  23. // On vérifie l'argument reçu
  24. return "Veuillez entrer un nombre entier compris entre 0 et 999.";
  25. } else if (number === 0) {
  26. // Si c'est 0 on retourne "zéro".
  27. return "Zéro";
  28. } else {
  29. // Tous les autres cas
  30.  
  31. // On crée un "dictionnaire" de chiffres en lettres
  32. let units2Letters = [
  33. "",
  34. "un",
  35. "deux",
  36. "trois",
  37. "quatre",
  38. "cinq",
  39. "six",
  40. "sept",
  41. "huit",
  42. "neuf",
  43. "dix",
  44. "onze",
  45. "douze",
  46. "treize",
  47. "quatorze",
  48. "quinze",
  49. "seize",
  50. "dix-sept",
  51. "dix-huit",
  52. "dix-neuf"
  53. ],
  54. tens2Letters = [
  55. "",
  56. "dix",
  57. "vingt",
  58. "trente",
  59. "quarante",
  60. "cinquante",
  61. "soixante",
  62. "soixante",
  63. "quatre-vingt",
  64. "quatre-vingt"
  65. ];
  66.  
  67. // On compte le nombre d'unités, dizaines et centaines à l'aide du modulo
  68. var units = number % 10,
  69. tens = ((number % 100) - units) / 10, // On doit soustraire les unités
  70. hundreds = ((number % 1000) - (number % 100)) / 100; // On doit soustraire les dizaines
  71.  
  72. // On fait correspondre le nombre d'unités, dizaines et centaines avec le dictionnaire
  73. let unitsOut, tensOut, hundredsOut;
  74.  
  75. // Unités. On met "et" devant 1 si la dizaine n'est pas 8 (on ne dit pas "quatre-ving-et-un")
  76. unitsOut =
  77. (units === 1 && tens > 0 && tens !== 8 ? "et-" : "") +
  78. units2Letters[units];
  79.  
  80. // Dizaines.
  81. if (tens === 1 && units > 0) {
  82. // On commence par traiter les chiffres de 11 à 19.
  83. tensOut = units2Letters[10 + units]; // Avec « 10 + units » on obtient le nombre souhaité entre 11 et 19
  84. unitsOut = ""; // Ne pas oublier de vider unitsOut qui n'est plus utile.
  85. } else if (tens === 7 || tens === 9) {
  86. // On traite les dizaines égales à 7 ou 9. On dit en effet soixante-treize ou quatre-vingt-dix-neuf
  87. tensOut =
  88. tens2Letters[tens] +
  89. "-" +
  90. (tens === 7 && units === 1 ? "et-" : "") +
  91. units2Letters[10 + units];
  92. unitsOut = "";
  93. } else {
  94. // Dizaines "normales"
  95. tensOut = tens2Letters[tens];
  96. }
  97.  
  98. // "Quatre-vingt" sans unité prend un "s" à la fin :
  99. tensOut += units === 0 && tens === 8 ? "s" : "";
  100.  
  101. // Centaines
  102. hundredsOut =
  103. (hundreds > 1 ? units2Letters[hundreds] + "-" : "") + // On affiche un chiffre avant "cent" s'il y'a plus d'une centaine.
  104. (hundreds > 0 ? "cent" : "") + // On affiche "cent" s'il y'a des centaines.
  105. (hundreds > 1 && tens == 0 && units == 0 ? "s" : ""); // On rajoute un s dan certains cas.
  106.  
  107. // On concatène le tout. On met un ternaire pour éviter d'avoir des tirets inutles avant et après
  108. return (
  109. hundredsOut +
  110. (hundredsOut && tensOut ? "-" : "") +
  111. tensOut +
  112. ((hundredsOut && unitsOut) || (tensOut && unitsOut) ? "-" : "") +
  113. unitsOut
  114. );
  115. }
  116. }
  117.  
  118. </script>
  119.  
  120. </html>
Add Comment
Please, Sign In to add comment