Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.12.12;
Скачать: CL | DM;

Вниз

подскажите алгоритм как число написать прописью   Найти похожие ветки 

 
big noob   (2004-12-01 12:18) [0]

добрый день....

подскажите алгоритм как число написать прописью


 
KSergey ©   (2004-12-01 12:20) [1]

Найди яндексом готовые


 
big noob   (2004-12-01 12:23) [2]

да я сам хочу сделать


 
Amoeba ©   (2004-12-01 12:25) [3]


> big noob   (01.12.04 12:23) [2]
> да я сам хочу сделать

Очередной велосипед изобрести приспичило?


 
Александр Иванов ©   (2004-12-01 12:36) [4]

Кто-то здесь делился, не помню точно, по-моему Nikolay N.

Attribute VB_Name = "Module1"
Public Function Сумма_прописью(Summa As Double, HideCentIfZero As Boolean) As String
Static Init As Boolean
Static MR(0 To 4) As String
Static MA(0 To 4, 0 To 9) As String
Static TR(0 To 2, 0 To 9) As String
Static Ex(0 To 2, 0 To 9) As String

If Summa <= 0 Or Summa > 999999999999.99 Then Exit Function

If Not Init Then
  MR(0) = "копе"
  MR(1) = "рубл"
  MR(2) = "тысяч"
  MR(3) = "миллион"
  MR(4) = "миллиард"
  TR(0, 0) = ""
  TR(0, 1) = "од"
  TR(0, 2) = "дв"
  TR(0, 3) = "три"
  TR(0, 4) = "четыр"
  TR(0, 5) = "пят"
  TR(0, 6) = "шест"
  TR(0, 7) = "сем"
  TR(0, 8) = "восем"
  TR(0, 9) = "девят"
  TR(1, 0) = ""
  TR(1, 1) = "десять"
  TR(1, 2) = "двадцать"
  TR(1, 3) = "тридцать"
  TR(1, 4) = "сорок"
  TR(1, 5) = "пятьдесят"
  TR(1, 6) = "шестьдесят"
  TR(1, 7) = "семьдесят"
  TR(1, 8) = "восемьдесят"
  TR(1, 9) = "девяносто"
  TR(2, 0) = ""
  TR(2, 1) = "сто"
  TR(2, 2) = "двести"
  TR(2, 3) = "триста"
  TR(2, 4) = "четыреста"
  TR(2, 5) = "пятьсот"
  TR(2, 6) = "шестьсот"
  TR(2, 7) = "семьсот"
  TR(2, 8) = "восемьсот"
  TR(2, 9) = "девятьсот"
  MA(0, 0) = "ек"
  MA(0, 1) = "йка"
  MA(0, 2) = "йки"
  MA(0, 3) = "йки"
  MA(0, 4) = "йки"
  MA(0, 5) = "ек"
  MA(0, 6) = "ек"
  MA(0, 7) = "ек"
  MA(0, 8) = "ек"
  MA(0, 9) = "ек"
  MA(1, 0) = "ей"
  MA(1, 1) = "ь"
  MA(1, 2) = "я"
  MA(1, 3) = "я"
  MA(1, 4) = "я"
  MA(1, 5) = "ей"
  MA(1, 6) = "ей"
  MA(1, 7) = "ей"
  MA(1, 8) = "ей"
  MA(1, 9) = "ей"
  MA(2, 0) = ""
  MA(2, 1) = "а"
  MA(2, 2) = "и"
  MA(2, 3) = "и"
  MA(2, 4) = "и"
  MA(2, 5) = ""
  MA(2, 6) = ""
  MA(2, 7) = ""
  MA(2, 8) = ""
  MA(2, 9) = ""
  MA(3, 0) = "ов"
  MA(3, 1) = ""
  MA(3, 2) = "а"
  MA(3, 3) = "а"
  MA(3, 4) = "а"
  MA(3, 5) = "ов"
  MA(3, 6) = "ов"
  MA(3, 7) = "ов"
  MA(3, 8) = "ов"
  MA(3, 9) = "ов"
  MA(4, 0) = "ов"
  MA(4, 1) = ""
  MA(4, 2) = "а"
  MA(4, 3) = "а"
  MA(4, 4) = "а"
  MA(4, 5) = "ов"
  MA(4, 6) = "ов"
  MA(4, 7) = "ов"
  MA(4, 8) = "ов"
  MA(4, 9) = "ов"
  Ex(0, 0) = ""
  Ex(0, 1) = "иннадцать"
  Ex(0, 2) = "енадцать"
  Ex(0, 3) = "надцать"
  Ex(0, 4) = "надцать"
  Ex(0, 5) = "надцать"
  Ex(0, 6) = "надцать"
  Ex(0, 7) = "надцать"
  Ex(0, 8) = "надцать"
  Ex(0, 9) = "надцать"
  Ex(1, 0) = ""
  Ex(1, 1) = "ин"
  Ex(1, 2) = "а"
  Ex(1, 3) = ""
  Ex(1, 4) = "е"
  Ex(1, 5) = "ь"
  Ex(1, 6) = "ь"
  Ex(1, 7) = "ь"
  Ex(1, 8) = "ь"
  Ex(1, 9) = "ь"
  Ex(2, 0) = ""
  Ex(2, 1) = "на"
  Ex(2, 2) = "е"
  Ex(2, 3) = ""
  Ex(2, 4) = "е"
  Ex(2, 5) = "ь"
  Ex(2, 6) = "ь"
  Ex(2, 7) = "ь"
  Ex(2, 8) = "ь"
  Ex(2, 9) = "ь"
  Init = True
End If

Dim TxtRps As String
Dim i As Integer, j As Integer, k As Integer
Dim R(0 To 2) As Integer
Dim Acc As String, d As String
TxtRps = Format(Summa, "000000000000.00")
TxtRps = Left(TxtRps, 12) & "0" & Right(TxtRps, 2)

For j = 4 To 0 Step -1
  For i = 2 To 0 Step -1
      R(i) = Mid(TxtRps, 15 - j * 3 - i, 1)
  Next i
  If j > 0 Then
      Acc = TR(2, R(2))
  Else
      Acc = ""
      If HideCentIfZero And R(1) = 0 And R(0) = 0 Then Exit For
  End If
  If R(1) <> 1 Or R(0) = 0 Then
      If j > 0 Then
          Acc = Trim(Acc & " " & TR(1, R(1)))
          Acc = Trim(Acc & " " & TR(0, R(0)))
      Else
          Acc = Trim(Acc & " " & R(1) & R(0))
      End If
      If j = 0 Or j = 2 Then k = 2 Else k = 1
  Else
      If j > 0 Then
          Acc = Trim(Acc & " " & TR(0, R(0)))
      Else
          Acc = Trim(Acc & " " & R(1) & R(0))
      End If
      k = 0
  End If
  If Acc <> "" Or (j = 1 And Сумма_прописью <> "") Then
      If j = 0 Then d = "" Else d = Ex(k, R(0))
      Acc = Trim(Acc & d & " " & MR(j))
      If k <> 0 Then k = R(0)
      Acc = Acc & MA(j, k)
  End If
  Сумма_прописью = Trim(Сумма_прописью & " " & Acc)
Next j
Сумма_прописью = UCase(Left(Сумма_прописью, 1)) & Mid(Сумма_прописью, 2)

End Function


 
big noob   (2004-12-01 12:39) [5]

спасибочки


 
KSergey ©   (2004-12-01 13:02) [6]

> [5] big noob   (01.12.04 12:39)
> спасибочки

Это называется "да я сам хочу сделать"???!!! Кто не давал-то?


 
Digitman ©   (2004-12-01 13:03) [7]


> big noob   (01.12.04 12:39) [5]
> спасибочки


хто ж тебя знает ... может ты на языке племени умба-юмба результирующую строку хотел иметь ...

типа вх.параметр типа "дабл" имеет значение 5.672842598700014, а результат работы ф-ции по преобразованию этого параметра в "число прописью" должно иметь вид "кильдым-тыгдым-сыгдым-мырдым умбаюмбатугриков" ..

эт тебе тогда не на delpimaster.ru нужно соваться ..
скорее на delpimaster.umbayumba

)



Страницы: 1 вся ветка

Текущий архив: 2004.12.12;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.038 c
1-1101872940
HELPMEPLEASE
2004-12-01 06:49
2004.12.12
Как в DBGrid-e сделать фиксированые колонки


1-1101544263
Александр В.
2004-11-27 11:31
2004.12.12
Сохранение позиции TTreeView после обновления


14-1101213427
pasha_golub
2004-11-23 15:37
2004.12.12
МВД: Человеческие качества


3-1100428523
Megabyte
2004-11-14 13:35
2004.12.12
Не могу сделать запрос по вычисляемому полю


1-1101816916
jiran
2004-11-30 15:15
2004.12.12
Есть описание фукции на С++, как правильно описать на Delphi ?