Advertisement
Guest User

Untitled

a guest
Oct 16th, 2019
114
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.38 KB | None | 0 0
  1. // Get number of digits
  2. // in given number
  3. int len = num.Length;
  4.  
  5. // Base cases
  6. if (len == 0)
  7. {
  8. Console.WriteLine("empty string");
  9. return;
  10. }
  11. if (len > 4)
  12. {
  13. Console.WriteLine("Length more than " +
  14. "4 is not supported");
  15. return;
  16. }
  17.  
  18. /* The first string is not used,
  19. it is to make array indexing simple */
  20. string[] single_digits = new string[]{ "zero", "one", "two",
  21. "three", "four", "five",
  22. "six", "seven", "eight",
  23. "nine"};
  24.  
  25. /* The first string is not used,
  26. it is to make array indexing simple */
  27. string[] two_digits = new string[]{"", "ten", "eleven", "twelve",
  28. "thirteen", "fourteen",
  29. "fifteen", "sixteen", "seventeen",
  30. "eighteen", "nineteen"};
  31.  
  32. /* The first two string are not used,
  33. they are to make array indexing simple*/
  34. string[] tens_multiple = new string[]{"", "", "twenty", "thirty",
  35. "forty", "fifty","sixty",
  36. "seventy", "eighty", "ninety"};
  37.  
  38. string[] tens_power = new string[] {"hundred", "thousand"};
  39.  
  40. /* Used for debugging purpose only */
  41. Console.Write((new string(num)) + ": ");
  42.  
  43. /* For single digit number */
  44. if (len == 1)
  45. {
  46. Console.WriteLine(single_digits[num[0] - '0']);
  47. return;
  48. }
  49.  
  50. /* Iterate while num
  51. is not '\0' */
  52. int x = 0;
  53. while (x < num.Length)
  54. {
  55.  
  56. /* Code path for first 2 digits */
  57. if (len >= 3)
  58. {
  59. if (num[x]-'0' != 0)
  60. {
  61. Console.Write(single_digits[num[x] - '0'] + " ");
  62. Console.Write(tens_power[len - 3] + " ");
  63.  
  64. // here len can be 3 or 4
  65. }
  66. --len;
  67. }
  68.  
  69. /* Code path for last 2 digits */
  70. else
  71. {
  72. /* Need to explicitly handle
  73. 10-19. Sum of the two digits
  74. is used as index of "two_digits"
  75. array of strings */
  76. if (num[x] - '0' == 1)
  77. {
  78. int sum = num[x] - '0' +
  79. num[x] - '0';
  80. Console.WriteLine(two_digits[sum]);
  81. return;
  82. }
  83.  
  84. /* Need to explicitely handle 20 */
  85. else if (num[x] - '0' == 2 &&
  86. num[x + 1] - '0' == 0)
  87. {
  88. Console.WriteLine("twenty");
  89. return;
  90. }
  91.  
  92. /* Rest of the two digit
  93. numbers i.e., 21 to 99 */
  94. else
  95. {
  96. int i = (num[x] - '0');
  97. if(i > 0)
  98. Console.Write(tens_multiple[i] + " ");
  99. else
  100. Console.Write("");
  101. ++x;
  102. if (num[x] - '0' != 0)
  103. Console.WriteLine(single_digits[num[x] - '0']);
  104. }
  105. }
  106. ++x;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement