powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Сумма прописью в грузинском языке
20 сообщений из 20, страница 1 из 1
Сумма прописью в грузинском языке
    #37291424
Шавлюк Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте
Помогите кто-нибудь, может есть у кого-то готовый алгоритм перевода числа в сумму прописью на грузинском языке?
Язык программирования не важен. Сам грузинского не знаю
...
Рейтинг: 0 / 0
Сумма прописью в грузинском языке
    #37291611
pit_alex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Шавлюк Евгений,

а вчем трудность? находите любой алгоритм, и с помощью любого переводчика (например translate.google.com) поллучаете нужные числа прописью на грузинском и меняете их
...
Рейтинг: 0 / 0
Сумма прописью в грузинском языке
    #37291616
Шавлюк Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pit_alex,

Проблема в сложности образования числительных в грузинском языке.
Числительные в основании имеют систему с основанием 20
...
Рейтинг: 0 / 0
Сумма прописью в грузинском языке
    #37291648
pit_alex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Шавлюк Евгений,

Во как у них все не по русски :-) . век живи - век учись
...
Рейтинг: 0 / 0
Сумма прописью в грузинском языке
    #37291662
Фотография Ёш
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Шавлюк Евгений, а склонения есть в грузинском?
...
Рейтинг: 0 / 0
Сумма прописью в грузинском языке
    #37291668
Шавлюк Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Сумма прописью в грузинском языке
    #37292329
Фотография NickBell
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Этим кодом я воспользовалась у себя.

Код: plaintext
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.
Public Function GNumb(Numb As Single) As String
    Dim GNumTxt1000 As String
    'Dim GNumTxt1000000 As String
    Dim LNum As Long
    'Dim IntNum As Integer
    Dim LNum0 As Long
    Dim IntD As Long
    Dim NumTxt As String
    GNumTxt1000 = "aTasi"
    'GNumTxt1000000 = "milioni"
    Select Case Numb
        Case Is > 1000000
            GNumb = "amdeni fuli Tu gaqvs, wesier programas ver iyidi?!"
        Case 0
            GNumb = "nuli"
        Case Is > 0 And Numb < 1000000
           NumTxt = ""
           LNum0 = Int(Numb)
           LNum = Int(LNum0 / 1000)
           'IntNum = LNum
           If LNum >  0  Then NumTxt = NumTxt + GNumb999(LNum) + " " + GNumTxt1000
           IntD = Int(LNum0 - LNum *  1000 )
           If IntD >  0  Then
                If NumTxt = "" Then
                    NumTxt = GNumb999(IntD)
                   Else
                    NumTxt = Cut_I(NumTxt) + " " + GNumb999(IntD)
                    End If
                End If
           GNumb = NumTxt
        End Select
    
End Function

Private Function GNumb99(Numb As Integer) As String
 Dim GNumTxt19 As Variant
    Dim GNumTxt99 As Variant
    Dim GTxtUn As String
    Dim IntNum As Integer
    Dim IntNum0 As Integer
    Dim IntD As Integer
    Dim NumTxt As String
    
    GNumTxt19 = Array("erTi", "ori", "sami", "oTxi", "xuTi", "eqvsi", "Svidi", "rva", "cxra", "aTi", "TerTmeti", "Tormeti", _
                                                "cameti", "ToTxmeti", "TxuTmeti", "Teqvsmeti", "Cvidmeti", "Tvrameti", "cxrameti")
    GNumTxt99 = Array("oci", "ormoci", "samoci", "oTxmoci")
    GTxtUn = "da"
    NumTxt = ""
    If Numb =  0  Then GoTo L1
    
    IntNum0 = Numb
    IntNum = Int(IntNum0 /  20 )
    If IntNum >  0  Then NumTxt = NumTxt + GNumTxt99(IntNum -  1 )
    IntD = IntNum0 - IntNum *  20 
    If IntD =  0  Then GoTo L1
        If Len(NumTxt) >  0  Then NumTxt = Cut_I(NumTxt) + GTxtUn
        NumTxt = NumTxt + GNumTxt19(IntD -  1 )
L1: GNumb99 = NumTxt
End Function

Private Function Cut_I(NumTxt As String) As String
    If NumTxt = "" Then
        Cut_I = NumTxt
      ElseIf Right(NumTxt,  1 ) = "i" Then
            Cut_I = Left(NumTxt, Len(NumTxt) -  1 )
           Else
            Cut_I = NumTxt
        End If
End Function

Private Function GNumb999(Numb As Long) As String
  Dim GNumTxt100 As String
  Dim IntNum As Integer
  Dim IntNum0 As Integer
  Dim IntD As Integer
  Dim NumTxt As String
  
    GNumTxt100 = "asi"
    NumTxt = ""
    If Numb =  0  Then GoTo L2
    IntNum0 = Numb
    IntNum = Int(IntNum0 /  100 )
    If IntNum =  0  Then GoTo L1
        If IntNum >  1  Then NumTxt = NumTxt + Cut_I(GNumb99(IntNum))
        NumTxt = NumTxt + GNumTxt100
L1: IntD = IntNum0 - IntNum *  100 
    If IntD >  0  Then NumTxt = Cut_I(NumTxt) + GNumb99(IntD)
L2: GNumb999 = NumTxt
End Function
...
Рейтинг: 0 / 0
Сумма прописью в грузинском языке
    #37292556
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
On 02.06.2011 16:28, pit_alex wrote:

> а вчем трудность? находите любой алгоритм, и с помощью любого переводчика
> (например translate.google.com) поллучаете нужные числа прописью на грузинском и
> меняете их

Ты знаешь, в разных языках по-разному существительные при числительных
склоняются и вообще всё сложно бывает. Вот в немецком например, разряды числа
(десятки, сотни и т.п.) идут вовсе не слева направо, как в русском, а в русском
например рудиментарное двойственное число сохранилось в этом месте.

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Сумма прописью в грузинском языке
    #37293301
Шавлюк Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NickBell,

Большое спасибо
...
Рейтинг: 0 / 0
Сумма прописью в грузинском языке
    #37293327
Gwa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv а в русском
например рудиментарное двойственное число сохранилось в этом месте.

Не могли бы Вы пояснить про двойственное..
Без шуток..
Просто интересно.
Я например, понимаю двойственное в арабском.
Но в русском как-то не вижу хоть бы и рудиментов, как Вы говорите..
...
Рейтинг: 0 / 0
Сумма прописью в грузинском языке
    #37293445
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
On 03.06.2011 14:07, Gwa wrote:

> Не могли бы Вы пояснить про двойственное..
> Без шуток..
> Просто интересно.

Один сапог
Два сапога
Три сапога
Четыре сапога
Пять сапог
Шесть сапог
....

Двадцать два сапога

и так далее.

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Сумма прописью в грузинском языке
    #37293490
Gwa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv,
т.е. форма "сапога" Вы думаете есть рудимент двойственного числа?
Мне как-то в голову это не приходило.
Это Ваше открытие или .. ?
Во всяком случае это любопытно..
Хотя я считал двойственное характерным для семитских языков,
но не для индоевропейских..
...
Рейтинг: 0 / 0
Сумма прописью в грузинском языке
    #37294064
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
On 03.06.2011 15:08, Gwa wrote:

> т.е. форма "сапога" Вы думаете есть рудимент двойственного числа?
> Мне как-то в голову это не приходило.
> Это Ваше открытие или .. ?
> Во всяком случае это любопытно..

Я не филолог, читал сам про это. Может это не "двойственное"
число называется. Поищите в сети.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Сумма прописью в грузинском языке
    #37346514
Шавлюк Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если кому интересно, переписал на Firebird SQL
Пример на SQL
Код: plaintext
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.
create or alter procedure moneytostr_ge0 (
    numb bigint,
    val varchar( 10 ) = null)
returns (
    text varchar( 1000 ))
AS
declare variable N1000 varchar( 200 );
declare variable N100 varchar( 10 );
declare variable N99 varchar( 30 );
declare variable N19 varchar( 200 );
declare variable NUn varchar( 2 );
declare variable maxd bigint = 1e12;
declare variable d int =  4 ;
declare variable emp varchar( 10 ) = '@';
declare variable ost bigint;
declare variable num bigint;
declare variable intnum int;
declare variable intnum0 int;
declare variable Text999 varchar( 100 );
declare variable Text99 varchar( 100 );
begin
  N1000 = coalesce(val, emp)||',aTasi,milioni,miliardi,trilioni'; --1e0, 1e3, 1e6, 1e9, 1e12
  N100 = 'asi'; -- 100
  N19 = 'erTi,ori,sami,oTxi,xuTi,eqvsi,Svidi,rva,cxra,aTi,TerTmeti,Tormeti,cameti,ToTxmeti,TxuTmeti,Teqvsmeti,Cvidmeti,Tvrameti,cxrameti'; -- 1-19
  N99 = 'oci,ormoci,samoci,oTxmoci'; -- 20, 40, 60, 80
  NUn = 'da';

  if (numb > maxd* 1000 ) then
    text = numb;
  else if (numb =  0 ) then
    text = 'nuli';
  else
  begin
    text = '';
    ost = numb;

    while (ost >  0 ) do
    begin
      maxd = maxd /  1000 ;
      num = ost / maxd;
      ost = ost - num * maxd;
      if (Num >  0 ) then
      begin
        Text999 = '';
        IntNum = Num /  100 ;
        if (IntNum >  0 ) then
        begin
          if (IntNum >  1 ) then
            select trim(trailing 'i' from code) from get_wordnum(:N19, ',', :IntNum) into Text999;
          Text999 = Text999 || N100;
        end

        IntNum = Num - IntNum *  100 ;
        if (IntNum >  0 ) then
        begin
          Text99 = '';
          IntNum0 = IntNum;
          IntNum = IntNum0 /  20 ;
          if (IntNum >  0 ) then
            select code from get_wordnum(:N99, ',', :IntNum) into Text99;
          IntNum = IntNum0 - IntNum *  20 ;
          if (IntNum >  0 ) then
          begin
            if (Text99 > '') then
              Text99 = trim(trailing 'i' from Text99) || :NUn;
            select :Text99||code from get_wordnum(:N19, ',', :IntNum) into Text99;
          end
          Text999 = trim(trailing 'i' from Text999)||' '||Text99;
        end
        select trim(trailing 'i' from :text)||' '||:Text999||' '||code from get_wordnum(:N1000, ',', :d) into text;
      end
      d = d -  1 ;
    end

    text = trim(replace(text, emp, ''));
  end
  suspend;
end;

create or alter procedure moneytostr_ge (
    summa numeric( 12 , 2 ))
returns (
    text varchar( 1000 ))
AS
declare variable signN int;
declare variable hi int;
declare variable lo int;
begin
  signN = sign(summa);
  summa = abs(summa);
  hi = floor(summa);
  lo = floor((summa - floor(summa))* 100 );

  text = iif(signN = - 1 , 'minusia', '');
  select :text||' '||trim(text) from moneytostr_ge0(:hi, 'lari')  into text;
  select :text||' '||trim(text) from moneytostr_ge0(:lo, 'TeTri') into text;
  text = trim(text);
  suspend;
end;

Вызов
Код: plaintext
select text from moneytostr_ge( 12 . 67 )

Процедура get_wordnum возвращает N-е слово из строки, с указанным разделителем.
Можно заменить на UDF (Например WORDNUM из rFunc)
...
Рейтинг: 0 / 0
Сумма прописью в грузинском языке
    #37475298
Varuzhan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
NickBell,
Здесь цифры написаны латинскими буквами, а как написать национальными буквами в юникоде? Пробовал писать в в юникоде вместо букв вопросительные знаки ??????.
...
Рейтинг: 0 / 0
Сумма прописью в грузинском языке
    #37478467
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Varuzhan,

У вас MS SQL или что-то из других СУБД?

С другой стороны, принципиально - можно использовать данную процедуру на уровне СУБД, а результат изменять в приложении с помощью процедуры замены символов (при этом используя локализацию на конкретной рабочей станции)
...
Рейтинг: 0 / 0
Сумма прописью в грузинском языке
    #37478474
Шавлюк Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Varuzhan,

Как по моему, если БД поддерживает юникод, то процедура никак не меняется. Ставим вместо транслита оригинальные буквы и получаем нужный результат
...
Рейтинг: 0 / 0
Сумма прописью в грузинском языке
    #37479667
Varuzhan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Шавлюк Евгений,
в базе данных я оригтнальные буквы использую без проблем, но в программе оригигальные буквы не пишутся, вместо них ?????? эти знаки
...
Рейтинг: 0 / 0
Сумма прописью в грузинском языке
    #37479856
Varuzhan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я приношу свои извинения. У меня MS Access 2007.
...
Рейтинг: 0 / 0
Сумма прописью в грузинском языке
    #37482243
Varuzhan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
С помощью форума решение нашлось. Спасибо форуму.
наиональные буквы в юникоде и VBA ACCESS / Программирование / Sql.ru
http://www.sql.ru/forum/actualthread.aspx?tid=886619
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Сумма прописью в грузинском языке
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]