Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // * Write a program that converts a number in the range
- // [0...999] to a text corresponding to its English pronunciation.
- // Examples:
- // 0 -> "Zero"
- // 273 -> "Two hundred seventy three"
- // 400 -> "Four hundred"
- // 501 -> "Five hundred and one"
- // 711 -> "Seven hundred and eleven"
- using System;
- class NumberPronouncer
- {
- static string GetDigit(int number) // read single digits
- {
- string strDigit = null;
- switch (number)
- {
- case 0:
- strDigit = "zero";
- break;
- case 1:
- strDigit = "one";
- break;
- case 2:
- strDigit = "two";
- break;
- case 3:
- strDigit = "three";
- break;
- case 4:
- strDigit = "four";
- break;
- case 5:
- strDigit = "five";
- break;
- case 6:
- strDigit = "six";
- break;
- case 7:
- strDigit = "seven";
- break;
- case 8:
- strDigit = "eight";
- break;
- case 9:
- strDigit = "nine";
- break;
- default:
- Console.WriteLine("Error");
- break;
- }
- return strDigit;
- }
- static string GetTen(int number) // read double digit numbers
- {
- string strTen = null;
- if (number >= 10 && number <= 19) // cases 10 to 19
- {
- switch (number)
- {
- case 10:
- strTen = "ten";
- break;
- case 11:
- strTen = "eleven";
- break;
- case 12:
- strTen = "twelve";
- break;
- case 13:
- strTen = "thirteen";
- break;
- case 14:
- strTen = "fourteen";
- break;
- case 15:
- strTen = "fifteen";
- break;
- case 16:
- strTen = "sixteen";
- break;
- case 17:
- strTen = "seventeen";
- break;
- case 18:
- strTen = "eighteen";
- break;
- case 19:
- strTen = "ninteen";
- break;
- default:
- Console.WriteLine("error");
- break;
- }
- }
- else // cases 20 to 99
- {
- int digit = number % 10;
- if (number >= 90 && number <= 99)
- {
- strTen = "ninety";
- if(number > 90)
- {
- strTen += " " + GetDigit(digit);
- }
- }
- if (number >= 80 && number <= 89)
- {
- strTen = "eighty";
- if (number > 80)
- {
- strTen += " " + GetDigit(digit);
- }
- }
- if (number >= 70 && number <= 79)
- {
- strTen = "seventy";
- if (number > 70)
- {
- strTen += " " + GetDigit(digit);
- }
- }
- if (number >= 60 && number <= 69)
- {
- strTen = "sixty";
- if (number > 60)
- {
- strTen += " " + GetDigit(digit);
- }
- }
- if (number >= 50 && number <= 59)
- {
- strTen = "fifty";
- if (number > 50)
- {
- strTen += " " + GetDigit(digit);
- }
- }
- if (number >= 40 && number <= 49)
- {
- strTen = "fourty";
- if (number > 40)
- {
- strTen += " " + GetDigit(digit);
- }
- }
- if (number >= 30 && number <= 39)
- {
- strTen = "thirty";
- if (number > 30)
- {
- strTen += " " + GetDigit(digit);
- }
- }
- if (number >= 20 && number <= 29)
- {
- strTen = "twenty";
- if (number > 20)
- {
- strTen += " " + GetDigit(digit);
- }
- }
- }
- return strTen;
- }
- static string GetHundred(int number) // read triple digit numbers
- {
- string strHun = null;
- int firstDigit = number / 100;
- int last2Digits = number % 100;
- strHun = GetDigit(firstDigit) + " hundred";
- if (last2Digits != 0)
- {
- if (last2Digits >= 10)
- {
- strHun += " and " + GetTen(last2Digits);
- }
- else
- {
- strHun += " and " + GetDigit(last2Digits);
- }
- }
- return strHun;
- }
- static string UppercaseFirstLetter(string s) // convert first letter of string to uppercase
- {
- if (string.IsNullOrEmpty(s))
- {
- return string.Empty;
- }
- char[] ch = s.ToCharArray();
- ch[0] = char.ToUpper(ch[0]);
- return new string(ch);
- }
- static void Main()
- {
- Console.Write("Enter a number [0...999]: ");
- string input = Console.ReadLine();
- int number = int.Parse(input);
- int copy = number;
- int numberDigits = 0;
- string pronouncedNumber = null;
- if (copy != 0)
- {
- while (copy != 0)
- {
- copy /= 10;
- numberDigits++;
- }
- }
- else
- {
- numberDigits++;
- }
- if (numberDigits == 1)
- {
- pronouncedNumber = UppercaseFirstLetter(GetDigit(number));
- }
- if (numberDigits == 2)
- {
- pronouncedNumber = UppercaseFirstLetter(GetTen(number));
- }
- if (numberDigits == 3)
- {
- pronouncedNumber = UppercaseFirstLetter(GetHundred(number));
- }
- Console.WriteLine(pronouncedNumber);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement