Не могу понять почему сумма прописью не отображается не полностью скрипт на C#
Не могу понять почему сумма прописью не отображается не полностью то есть например 1425 словами прописывается как одна тысяча четыреста двадцать последнее число не прописывает. Или может есть у кого то другое решение проблемы,
private void tableCell100_BeforePrint(object sender, System.Drawing.Printing.PrintEventArgs e) {
string text = Convert.ToString(tableCell53.Text);
int number = Convert.ToInt32(text);
//int number = 1258;
int[] array_int = new int[4];
string[, ] array_string = new string[4, 3] {
{
" миллиард",
" миллиарда",
" миллиардов"
},
{
" миллион",
" миллиона",
" миллионов"
},
{
" тысяча",
" тысячи",
" тысяч"
},
{
"",
"",
""
}
};
array_int[0] = (number - (number % 1000000000)) / 1000000000;
array_int[1] = ((number % 1000000000) - (number % 1000000)) / 1000000;
array_int[2] = ((number % 1000000) - (number % 1000)) / 1000;
array_int[3] = number % 1000;
string result = "";
for (int i = 0; i < 4; i++) {
if (array_int[i] != 0) {
if (((array_int[i] - (array_int[i] % 100)) / 100) != 0) switch (((array_int[i] - (array_int[i] % 100)) / 100)) {
case 1:
result += " сто";
break;
case 2:
result += " двести";
break;
case 3:
result += " триста";
break;
case 4:
result += " четыреста";
break;
case 5:
result += " пятьсот";
break;
case 6:
result += " шестьсот";
break;
case 7:
result += " семьсот";
break;
case 8:
result += " восемьсот";
break;
case 9:
result += " девятьсот";
break;
}
if (((array_int[i] % 100) - ((array_int[i] % 100) % 10)) / 10 != 1) {
switch (((array_int[i] % 100) - ((array_int[i] % 100) % 10)) / 10) {
case 2:
result += " двадцать";
break;
case 3:
result += " тридцать";
break;
case 4:
result += " сорок";
break;
case 5:
result += " пятьдесят";
break;
case 6:
result += " шестьдесят";
break;
case 7:
result += " семьдесят";
break;
case 8:
result += " восемьдесят";
break;
case 9:
result += " девяносто";
break;
}
}
switch (array_int[i] % 100) {
case 1:
if (i == 2) result += " одна";
else result += " один";
break;
case 2:
if (i == 2) result += " две";
else result += " два";
break;
case 3:
result += " три";
break;
case 4:
result += " четыре";
break;
case 5:
result += " пять";
break;
case 6:
result += " шесть";
break;
case 7:
result += " семь";
break;
case 8:
result += " восемь";
break;
case 9:
result += " девять";
break;
case 10:
result += " десять";
break;
case 11:
result += " одиннадцать";
break;
case 12:
result += " двенадцать";
break;
case 13:
result += " тринадцать";
break;
case 14:
result += " четырнадцать";
break;
case 15:
result += " пятнадцать";
break;
case 16:
result += " шестнадцать";
break;
case 17:
result += " семнадцать";
break;
case 18:
result += " восемннадцать";
break;
case 19:
result += " девятнадцать";
break;
}
if (array_int[i] % 100 >= 10 && array_int[i] % 100 <= 19) result += " " + array_string[i, 2] + " ";
else switch (array_int[i] % 100) {
case 1:
result += " " + array_string[i, 0] + " ";
break;
case 2:
case 3:
case 4:
result += " " + array_string[i, 1] + " ";
break;
case 5:
case 6:
case 7:
case 8:
case 9:
result += " " + array_string[i, 2] + " ";
break;
}
}
tableCell100.Text = "Slownie: " + result + " EUR 00/100";
}
}
Ответы (1 шт):
Автор решения: Yevhenii
→ Ссылка
Нашел проблему может кому то понадобится
private void tableCell100_BeforePrint(object sender, System.Drawing.Printing.PrintEventArgs e) {
string text = Convert.ToString(tableCell53.Text);
// int number = Convert.ToInt32(text);
int number = 125858;
int[] array_int = new int[4];
string[,] array_string = new string[4, 3] {{" миллиард", " миллиарда", " миллиардов"},
{" миллион", " миллиона", " миллионов"},
{" тысяча", " тысячи", " тысяч"},
{"", "", ""}};
array_int[0] = (number - (number % 1000000000)) / 1000000000;
array_int[1] = ((number % 1000000000) - (number % 1000000)) / 1000000;
array_int[2] = ((number % 1000000) - (number % 1000)) / 1000;
array_int[3] = number % 1000;
string result = "";
for (int i = 0; i < 4; i++)
{
if (array_int[i] != 0)
{
if (((array_int[i] - (array_int[i] % 100)) / 100) != 0)
switch (((array_int[i] - (array_int[i] % 100)) / 100))
{
case 1: result += " сто"; break;
case 2: result += " двести"; break;
case 3: result += " триста"; break;
case 4: result += " четыреста"; break;
case 5: result += " пятьсот"; break;
case 6: result += " шестьсот"; break;
case 7: result += " семьсот"; break;
case 8: result += " восемьсот"; break;
case 9: result += " девятьсот"; break;
}
if (((array_int[i] % 100) - ((array_int[i] % 100) % 10)) / 10 != 1)
{
switch (((array_int[i] % 100) - ((array_int[i] % 100) % 10)) / 10)
{
case 2: result += " двадцать"; break;
case 3: result += " тридцать"; break;
case 4: result += " сорок"; break;
case 5: result += " пятьдесят"; break;
case 6: result += " шестьдесят"; break;
case 7: result += " семьдесят"; break;
case 8: result += " восемьдесят"; break;
case 9: result += " девяносто"; break;
}
}
switch (array_int[i] % 10)
{
case 1: if (i == 2) result += " одна"; else result += " один"; break;
case 2: if (i == 2) result += " две"; else result += " два"; break;
case 3: result += " три"; break;
case 4: result += " четыре"; break;
case 5: result += " пять"; break;
case 6: result += " шесть"; break;
case 7: result += " семь"; break;
case 8: result += " восемь"; break;
case 9: result += " девять"; break;
}
}
else switch (array_int[i] % 100)
{
case 10: result += " десять"; break;
case 11: result += " одиннадцать"; break;
case 12: result += " двенадцать"; break;
case 13: result += " тринадцать"; break;
case 14: result += " четырнадцать"; break;
case 15: result += " пятнадцать"; break;
case 16: result += " шестнадцать"; break;
case 17: result += " семнадцать"; break;
case 18: result += " восемннадцать"; break;
case 19: result += " девятнадцать"; break;
}
if (array_int[i] % 100 >= 10 && array_int[i] % 100 <= 19) result += " " + array_string[i, 2] + " ";
else switch (array_int[i] % 10)
{
case 1: result += " " + array_string[i, 0] + " "; break;
case 2:
case 3:
case 4: result += " " + array_string[i, 1] + " "; break;
case 5:
case 6:
case 7:
case 8:
case 9: result += " " + array_string[i, 2] + " "; break;
}
} tableCell100.Text="Slownie: "+result + " EUR 00/100";
}