Advertisement
ivan_yosifov

Number_Pronouncer

Nov 13th, 2013
51
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 6.46 KB | None | 0 0
  1. // * Write a program that converts a number in the range
  2. // [0...999] to a text corresponding to its English pronunciation.
  3. // Examples:
  4. //  0 -> "Zero"
  5. //  273 -> "Two hundred seventy three"
  6. //  400 -> "Four hundred"
  7. //  501 -> "Five hundred and one"
  8. //  711 -> "Seven hundred and eleven"
  9.  
  10.  
  11. using System;
  12.  
  13. class NumberPronouncer
  14. {
  15.     static string GetDigit(int number) // read single digits
  16.     {
  17.         string strDigit = null;
  18.         switch (number)
  19.         {
  20.             case 0:
  21.                 strDigit = "zero";
  22.                 break;
  23.             case 1:
  24.                 strDigit = "one";
  25.                 break;
  26.             case 2:
  27.                 strDigit = "two";
  28.                 break;
  29.             case 3:
  30.                 strDigit = "three";
  31.                 break;
  32.             case 4:
  33.                 strDigit = "four";
  34.                 break;
  35.             case 5:
  36.                 strDigit = "five";
  37.                 break;
  38.             case 6:
  39.                 strDigit = "six";
  40.                 break;
  41.             case 7:
  42.                 strDigit = "seven";
  43.                 break;
  44.             case 8:
  45.                 strDigit = "eight";
  46.                 break;
  47.             case 9:
  48.                 strDigit = "nine";
  49.                 break;            
  50.             default:
  51.                 Console.WriteLine("Error");
  52.                 break;
  53.         }
  54.         return strDigit;
  55.     }
  56.     static string GetTen(int number) // read double digit numbers
  57.     {
  58.         string strTen = null;
  59.         if (number >= 10 && number <= 19) // cases 10 to 19
  60.         {
  61.             switch (number)
  62.             {
  63.                 case 10:
  64.                     strTen = "ten";
  65.                     break;
  66.                 case 11:
  67.                     strTen = "eleven";
  68.                     break;
  69.                 case 12:
  70.                     strTen = "twelve";
  71.                     break;
  72.                 case 13:
  73.                     strTen = "thirteen";
  74.                     break;
  75.                 case 14:
  76.                     strTen = "fourteen";
  77.                     break;
  78.                 case 15:
  79.                     strTen = "fifteen";
  80.                     break;
  81.                 case 16:
  82.                     strTen = "sixteen";
  83.                     break;
  84.                 case 17:
  85.                     strTen = "seventeen";
  86.                     break;
  87.                 case 18:
  88.                     strTen = "eighteen";
  89.                     break;
  90.                 case 19:
  91.                     strTen = "ninteen";
  92.                     break;
  93.                 default:
  94.                     Console.WriteLine("error");
  95.                     break;
  96.             }
  97.         }
  98.         else // cases 20 to 99
  99.         {              
  100.             int digit = number % 10;
  101.             if (number >= 90 && number <= 99)
  102.             {
  103.                 strTen = "ninety";
  104.                 if(number > 90)
  105.                 {
  106.                     strTen += " " + GetDigit(digit);
  107.                 }
  108.             }
  109.             if (number >= 80 && number <= 89)
  110.             {
  111.                 strTen = "eighty";
  112.                 if (number > 80)
  113.                 {
  114.                     strTen += " " + GetDigit(digit);
  115.                 }
  116.             }
  117.             if (number >= 70 && number <= 79)
  118.             {
  119.                 strTen = "seventy";
  120.                 if (number > 70)
  121.                 {
  122.                     strTen += " " + GetDigit(digit);
  123.                 }
  124.             }
  125.             if (number >= 60 && number <= 69)
  126.             {
  127.                 strTen = "sixty";
  128.                 if (number > 60)
  129.                 {
  130.                     strTen += " " + GetDigit(digit);
  131.                 }
  132.             }
  133.             if (number >= 50 && number <= 59)
  134.             {
  135.                 strTen = "fifty";
  136.                 if (number > 50)
  137.                 {
  138.                     strTen += " " + GetDigit(digit);
  139.                 }
  140.             }
  141.             if (number >= 40 && number <= 49)
  142.             {
  143.                 strTen = "fourty";
  144.                 if (number > 40)
  145.                 {
  146.                     strTen += " " + GetDigit(digit);
  147.                 }
  148.             }
  149.             if (number >= 30 && number <= 39)
  150.             {
  151.                 strTen = "thirty";
  152.                 if (number > 30)
  153.                 {
  154.                     strTen += " " + GetDigit(digit);
  155.                 }
  156.             }
  157.             if (number >= 20 && number <= 29)
  158.             {
  159.                 strTen = "twenty";
  160.                 if (number > 20)
  161.                 {
  162.                     strTen += " " + GetDigit(digit);
  163.                 }
  164.             }
  165.         }
  166.         return strTen;
  167.     }
  168.     static string GetHundred(int number) // read triple digit numbers
  169.     {
  170.         string strHun = null;
  171.  
  172.         int firstDigit = number / 100;
  173.         int last2Digits = number % 100;
  174.         strHun = GetDigit(firstDigit) + " hundred";
  175.         if (last2Digits != 0)
  176.         {
  177.             if (last2Digits >= 10)
  178.             {
  179.                 strHun += " and " + GetTen(last2Digits);
  180.             }
  181.             else
  182.             {
  183.                 strHun += " and " + GetDigit(last2Digits);
  184.             }
  185.         }
  186.  
  187.         return strHun;
  188.     }
  189.     static string UppercaseFirstLetter(string s) // convert first letter of string to uppercase
  190.     {        
  191.         if (string.IsNullOrEmpty(s))
  192.         {
  193.             return string.Empty;
  194.         }
  195.         char[] ch = s.ToCharArray();
  196.         ch[0] = char.ToUpper(ch[0]);
  197.         return new string(ch);
  198.     }
  199.     static void Main()
  200.     {
  201.         Console.Write("Enter a number [0...999]: ");
  202.         string input = Console.ReadLine();
  203.  
  204.         int number = int.Parse(input);
  205.         int copy = number;
  206.  
  207.         int numberDigits = 0;
  208.         string pronouncedNumber = null;
  209.  
  210.         if (copy != 0)
  211.         {
  212.             while (copy != 0)
  213.             {
  214.                 copy /= 10;
  215.                 numberDigits++;
  216.             }
  217.         }
  218.         else
  219.         {
  220.             numberDigits++;
  221.         }
  222.  
  223.         if (numberDigits == 1)
  224.         {
  225.             pronouncedNumber = UppercaseFirstLetter(GetDigit(number));
  226.         }
  227.         if (numberDigits == 2)
  228.         {
  229.             pronouncedNumber = UppercaseFirstLetter(GetTen(number));
  230.         }
  231.         if (numberDigits == 3)
  232.         {
  233.             pronouncedNumber = UppercaseFirstLetter(GetHundred(number));
  234.         }
  235.  
  236.         Console.WriteLine(pronouncedNumber);
  237.  
  238.     }  
  239. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement