Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.86/28: Рейтинг темы: голосов - 28, средняя оценка - 4.86
ceme4kin
1 / 1 / 0
Регистрация: 13.03.2013
Сообщений: 5
1

Сумма прописью на украинском языке

23.04.2013, 11:28. Просмотров 5300. Ответов 5
Метки нет (Все метки)

Здравствуйте! Интересует код который в правильных падежах прописывает суммы прописью по украински с правильными падежами. Знаю, что не раз поднималась данная тема для русского языка, но меня именно интересует укр с корректными падежами. Сделал по образцу, с русского перевел на украинский, но не всегда подставляются корректные падежи(((
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.04.2013, 11:28
Ответы с готовыми решениями:

Сумма прописью с копейками
Доброго времени суток господа!!! Есть ли у кого-нибудь готовый код для "суммы прописью с...

Сумма прописью (библиотека)
Ребят может у кого есть библиотека для перевода числа в правописный вид. Для английского языка...

Как вывести число (сумма, количество) прописью ?
Здраствуйте, как можно форматнуть число : 123.45 -> "сто двадцать три" грн 45 коп 198.10 -> "сто...

Литература на украинском языке
Может кто посоветует литературу по C++ на украинском языке

Запросы на украинском языке, соотношение?
У кого то есть данные, по соотношению запросов: на русском - украинском языках одна и таже фраза...

5
Tessen
689 / 656 / 126
Регистрация: 30.03.2012
Сообщений: 1,124
23.04.2013, 11:31 2
думаю вы быстрее найдете помощь если укажете как они должны переводиться и ваш код

не все тут знают украинский )
0
andrew_w2k
326 / 326 / 90
Регистрация: 04.03.2010
Сообщений: 648
23.04.2013, 11:34 3
а в украинском падежи от русского отличаются?
0
ceme4kin
1 / 1 / 0
Регистрация: 13.03.2013
Сообщений: 5
23.04.2013, 12:13  [ТС] 4
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
using System;
 
/// <summary>
/// Класс отображения суммы прописью.
/// 3 варианта - рубли, доллары и просто для использования
/// других любых единиц (вагоны, мешки и т.п.)
/// --------------------------------------
/// Автор - Глеб Уфимцев (dnkvpb@nm.ru)
/// </summary>
 
public class NumByWords 
{
    public static string GrnPhrase (decimal money)
    { 
        return CurPhrase(money,"гривня","гривні","гривень","копійка","копійки","копійок");
    }
 
    
 
    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]+EndDek1(d1,ismale)+Th[th]+EndTh(th,d1)+str;
            };
        };
        str=str.Substring(1,1).ToUpper()+str.Substring(2);
        return str;
    }
 
#region Private members
    private static string CurPhrase (decimal money, 
        string word1,string word234,string wordmore,
        string sword1,string sword234,string swordmore)
    { 
        //money=decimal.Round(money,2);
        decimal decintpart=decimal.Truncate(money);
        ulong intpart=decimal.ToUInt64(decintpart);
        string str=NumPhrase(intpart,true)+" ";
        byte endpart=(byte)(intpart%100UL); 
        if (endpart>19) endpart=(byte)(endpart%10);
        switch (endpart) 
        {
            case 1: str+=word1; break;
            case 2:
            case 3:
            case 4: str+=word234; break;
            default: str+=wordmore; break;
        }
        byte fracpart=decimal.ToByte((money-decintpart)*100M);
        str+=" "+((fracpart<10)?"0":"")+fracpart.ToString()+" ";
        if (fracpart>19) fracpart=(byte)(fracpart%10);
        switch (fracpart) 
        {
            case 1: str+=sword1; break;
            case 2:
            case 3:
            case 4: str+=sword234; break;
            default: str+=swordmore; break;
        };
        return str;
    }
    private static string EndTh(byte ThNum, byte Dek)
    {
        bool In234=((Dek>=2)&&(Dek<=4));
        bool More4=((Dek>4)||(Dek==0));
        if (((ThNum>2)&&In234)||((ThNum==2)&&(Dek==1))) return "і";
        else if ((ThNum>2)&&More4) return "ів";
        else if ((ThNum==2)&&In234) return "і";
        else return "";
    }
    private static string EndDek1(byte Dek, bool IsMale)
    {
        if ((Dek>2)||(Dek==0)) return "";
        else if (Dek==1) 
        {
            if (IsMale) return "ин";
            else return "на";
        }
        else 
        {
            if (IsMale) return "а"; 
            else return "а";
        }
    }
#endregion
}
вот код, в котором я значения перевел под укр. язык. Но окончания в EndTh() и EndDek1() не могу нормально подобрать, то выводит "два тисяча" то "одна тисячі" получается вот такая каша, может у кого есть уже готовый код под укр язык?
1
javadev75
1 / 1 / 0
Регистрация: 11.04.2013
Сообщений: 8
24.05.2014, 14:41 5
Готовое решение для украинского языка:

https://github.com/javadev/moneytost.../MoneyToStr.cs

0
DPW
99 / 99 / 15
Регистрация: 23.05.2012
Сообщений: 259
24.05.2014, 14:52 6
Это на каком?
0
24.05.2014, 14:52
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.05.2014, 14:52

Украинский сайт, на украинском языке
Уважаемые СЕО специалист, помогите советом, поделитесь опытом. Клиент хочет большой портал...

Сборник задач на украинском языке
Варіант 1 1.знайти у матриці стовпчик з максимальним добутком 2. заданий файл цілих чисел, знайти...

Перевод целого числа в текст на украинском языке
Разработать программу, переводящую целое число в текст на украинском языке. Необходимо реализовать...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru