Написать программу, выводящую по заданному числу сумму прописью - C#
Формулировка задачи:
Помогите написать программу, выводящую по заданному числу от 0 до 999 999 999 999,99 сумму прописью.
Пока есть только это.
public static string NumPhrase(ulong Value, bool IsMale)
{
if (Value == 0UL) return "Ноль";
string[] Dek1 = { "", " один", " два", " три", " четыре", " пять", " шесть", " семь", " восемь", " девять", " десять", " одиннадцать", " двенадцать", " тринадцать", " четырнадцать", " пятнадцать", " шестнадцать", " семнадцать", " восемнадцать", " девятнадцать" };
string[] Dek2 = { "", "", " двадцать", " тридцать", " сорок", " пятьдесят", " шестьдесят", " семьдесят", " восемьдесят", " девяносто" };
string[] Dek3 = { "", " сто", " двести", " триста", " четыреста", " пятьсот", " шестьсот", " семьсот", " восемьсот", " девятьсот" };
string[] Th = { "", "", " тысяч", " миллион", " миллиард", " триллион", " квадрилион", " квинтилион" };
string str = "";
for (byte th = 1; Value > 0; th++)
{
ushort gr = (ushort)(Value % 1000);
Value = (Value - gr) / 1000; if (gr > 0)
{
byte d3 = (byte)((gr - gr % 100) / 100); byte d1 = (byte)(gr % 10); byte d2 = (byte)((gr - d3 * 100 - d1) / 10);
if (d2 == 1)
d1 += (byte)10; bool ismale = (th > 2) || ((th == 1) && IsMale); str = Dek3[d3] + Dek2[d2] + Dek1[d1] + Endked1(d1, ismale) + Th[th] + EndTh(th, d1) + str;
}
}
str = str.Substring(1, 1).ToUpper() + str.Substring(2); return str;
}Решение задачи: «Написать программу, выводящую по заданному числу сумму прописью»
textual
Листинг программы
static void Main(string[] args)
{
Dictionary<char, string> unit = new Dictionary<char, string>(){{'0',""},
{'1',"один"},{'2',"два"},{'3',"три"}, {'4',"четыре"},{'5',"пять"},
{'6',"шесть"}, {'7',"семь"},{'8',"восемь"},{'9',"девять"}};
Dictionary<char, string> ten = new Dictionary<char, string>(){{'0',""},
{'1',"десять"},{'2',"двадцать"},{'3',"тридцать"}, {'4',"сорок"},{'5',"пятьдесят"},
{'6',"шестьдесят"}, {'7',"семьдесят"},{'8',"восемьдесят"},{'9',"девяносто"}};
Dictionary<char, string> hundred = new Dictionary<char, string>(){{'0',""},
{'1',"сто"},{'2',"двести"},{'3',"триста"}, {'4',"четыреста"},{'5',"пятьсот"},
{'6',"шестьсот"}, {'7',"семьсот"},{'8',"восемьсот"},{'9',"девятьсот"}};
Dictionary<char, string> thousand = new Dictionary<char, string>(){{'0',""},
{'1',"одна тысяча"},{'2',"две тысячи"},{'3',"три тысячи"},{'4',"четыре тысячи"},{'5',"пять тысяч"},{'6',"шесть тысяч"},
{'7',"семь тысяч"},{'8',"восемь тысяч"},{'9',"девять тысяч"}};
List<Dictionary<char, string>> mylist = new List<Dictionary<char, string>>();
mylist.Add(unit);
mylist.Add(ten);
mylist.Add(hundred);
mylist.Add(thousand);
long x;
do
{
Console.Clear();
Console.WriteLine("Введите целое число");
} while (!Int64.TryParse(Console.ReadLine(), out x));
string s = x.ToString();
string result = "";
int leng =s.Length;
for(int i =0; i<leng;i++)
{
if (leng - i == 2 && s[i] == '1')
{
result += unit[s[i]] + "надцать ";
break;
}
else
result += mylist[leng - i-1][s[i]] + " ";
}
Console.WriteLine(result);
Console.ReadLine();
}