lmarkov

Number English Pronunciation

Dec 7th, 2012
118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.83 KB | None | 0 0
  1. /*
  2.  * * Write a program that converts a number in the range [0...999] to a text corresponding to its English pronunciation. Examples:
  3.     0  "Zero"
  4.     273  "Two hundred seventy three"
  5.     400  "Four hundred"
  6.     501  "Five hundred and one"
  7.     711  "Seven hundred and eleven"
  8. */
  9.  
  10. using System;
  11.  
  12. class NumberEnglishPronunciation
  13. {
  14.     static void Main()
  15.     {
  16.         while (true)
  17.         {
  18.             int number, hundreds = 0, tens = 0, digit = 0;
  19.             string numberTxt = "0";
  20.  
  21.             string[] numbersTo19Text = { "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine",
  22.                                        "ten", "eleven", "twelve", "thirteen", "fourteen", "fifteen", "sixteen", "seventeen", "eighteen", "nineteen"};
  23.             string[] numbersTo100Text = { "", "", "twenty", "thirty", "fourty", "fifty", "sixty", "seventy", "eighty", "ninety" };
  24.  
  25.  
  26.             number = InputData();
  27.  
  28.             hundreds = number / 100 % 10;
  29.             tens = number / 10 % 10;
  30.             digit = number % 10;
  31.  
  32.             if (number < 20)
  33.             {
  34.                 numberTxt = numbersTo19Text[number];
  35.             }
  36.             else if (number >= 20 && number < 100)
  37.             {
  38.                 if (digit != 0)
  39.                 {
  40.                     numberTxt = numbersTo100Text[tens] + " " + numbersTo19Text[digit];
  41.                 }
  42.                 else
  43.                 {
  44.                     numberTxt = numbersTo100Text[tens];
  45.                 }
  46.             }
  47.             else if (number != 100 && number != 200 && number != 300 && number != 400 && number != 500 && number != 600 && number != 700 && number != 800 && number != 900)
  48.             {
  49.                 if (tens != 0 && tens > 1)
  50.                 {
  51.                     numberTxt = numbersTo19Text[hundreds] + " hundred and " + numbersTo100Text[tens] + " " + numbersTo19Text[digit];
  52.                 }
  53.                 else
  54.                 {
  55.                     numberTxt = numbersTo19Text[hundreds] + " hundred and " + numbersTo19Text[tens*10+digit];
  56.                 }
  57.             }
  58.             else
  59.             {
  60.                 numberTxt = numbersTo19Text[hundreds] + " hundred";
  61.             }
  62.  
  63.             OutputData(numberTxt);
  64.         }
  65.     }
  66.  
  67.  
  68.     static int InputData()
  69.     {
  70.         int number;
  71.         string invalidInput = "Please enter a value between 0 and 999" + Environment.NewLine;
  72.         Console.WriteLine("Enter a number: ");
  73.         while (!(int.TryParse(Console.ReadLine(), out number) && number >= 0 && number <= 999))
  74.         {
  75.             Console.WriteLine(invalidInput);
  76.             Console.WriteLine("Enter a number: ");
  77.         }
  78.         return number;
  79.     }
  80.  
  81.     static void OutputData(string numberTxt)
  82.     {
  83.         Console.WriteLine("Result: {0}" + Environment.NewLine, numberTxt);
  84.     }
  85.  
  86. }
Advertisement
Add Comment
Please, Sign In to add comment