private static string GetSimplePart(int Num, TRod Rod = TRod.M) { switch (Num) { case 1: switch (Rod) { case TRod.M: return "один"; case TRod.Z: return "одна"; default: return ""; } case 2: switch (Rod) { case TRod.M: return "два"; case TRod.Z: return "две"; default: return ""; } case 3: return "три"; case 4: return "четыре"; case 5: return "пять"; case 6: return "шесть"; case 7: return "семь"; case 8: return "восемь"; case 9: return "девять"; case 10: return "десять"; case 11: return "одиннадцать"; case 12: return "двенадцать"; case 13: return "тринадцать"; case 14: return "четырнадцать"; case 15: return "пятнадцать"; case 16: return "шестнадцать"; case 17: return "семнадцать"; case 18: return "восемнадцать"; case 19: return "девятнадцать"; case 20: return "двадцать"; case 30: return "тридцать"; case 40: return "сорок"; case 50: return "пятьдесят"; case 60: return "шестьдесят"; case 70: return "семьдесят"; case 80: return "восемьдесят"; case 90: return "девяносто"; case 100: return "сто"; case 200: return "двести"; case 300: return "триста"; case 400: return "четыреста"; case 500: return "пятьсот"; case 600: return "шестьсот"; case 700: return "семьсот"; case 800: return "восемьсот"; case 900: return "девятьсот"; default: return ""; } }
private static string GetNumPron(int Num, TRod Rod = TRod.M) { StringBuilder res = new StringBuilder(); if (Num < 0) return "минус " + GetNumPron(-Num, Rod); if (Num / 100 != 0) { res.Append(GetSimplePart(Num / 100 * 100, TRod.M)); res.Append(" " + GetNumPron(Num % 100, Rod)); } else if (Num / 10 != 0 && Num / 10 != 1) { res.Append(GetSimplePart(Num / 10 * 10, TRod.M)); res.Append(" " + GetNumPron(Num % 10, Rod)); } else res.Append(GetSimplePart(Num, Rod)); return res.ToString().Trim(); }