Превратить числа в текст на английском языке
В английском языке числительные строятся примерно как в русском — числа до двадцати имеют самостоятельные имена: 0 — zero, 1 — one, 2 — two, 3 — three, 4 — four, 5 — five, 6 — six, 7 — seven, 8 — eight, 9 — nine, 10 — ten, 11 — eleven, 12 — twelve, 13 — thirteen, 14 — fourteen, 15 — fifteen, 16 — sixteen, 17 — seventeen, 18 — eighteen, 19 — nineteen.
В числах от 20 до 99 десятки и единицы записываются через дефис. Например: 24 — twenty-four, 48 — forty-eight. Десятки называются так: 20 — twenty, 30 — thirty, 40 — fourty, 50 — fifty, 60 — sixty, 70 — seventy, 80 — eighty, 90 — ninety.
Преобразуйте неотрицательное целое число num в его буквенное представление английскими словами.
Вывод: “One Hundred Twenty Three”
Вывод: “Twelve Thousand Three Hundred Forty Five”
Решение задачи с использованием рекурсии:
internal class Program { static void Main(string[] args) { Solution solution = new(); Console.Write("\n\n\t\tВведите число>"); int d = Convert.ToInt32(Console.ReadLine()); string str = solution.NumberToWords(d); Console.WriteLine("\t\t" + str); Console.ReadKey(); } } public class Solution { public Dictionary<int, string> dict = new Dictionary<int, string>(); public string NumberToWords(int num) { if (num == 0) return "Zero"; InitDict(); var r = Convert(num); return r.Substring(0, r.Length - 1); } public string Convert(int num) { foreach (var key in dict.Keys) { if (num >= key) { var res = dict[key] + " " + Convert(num % key); if (num >= 100) res = Convert(num / key) + res; return res; } } return ""; } public void InitDict() { dict.Add(1000000000, "Billion"); dict.Add(1000000, "Million"); dict.Add(1000, "Thousand"); dict.Add(100, "Hundred"); dict.Add(90, "Ninety"); dict.Add(80, "Eighty"); dict.Add(70, "Seventy"); dict.Add(60, "Sixty"); dict.Add(50, "Fifty"); dict.Add(40, "Forty"); dict.Add(30, "Thirty"); dict.Add(20, "Twenty"); dict.Add(19, "Nineteen"); dict.Add(18, "Eighteen"); dict.Add(17, "Seventeen"); dict.Add(16, "Sixteen"); dict.Add(15, "Fifteen"); dict.Add(14, "Fourteen"); dict.Add(13, "Thirteen"); dict.Add(12, "Twelve"); dict.Add(11, "Eleven"); dict.Add(10, "Ten"); dict.Add(9, "Nine"); dict.Add(8, "Eight"); dict.Add(7, "Seven"); dict.Add(6, "Six"); dict.Add(5, "Five"); dict.Add(4, "Four"); dict.Add(3, "Three"); dict.Add(2, "Two"); dict.Add(1, "One"); } }