Число процентов прописью - VB

Узнай цену своей работы

Формулировка задачи:

Ребята подскажите где можно посмотреть как в VB6 прописать прописью сумму в процентах с десятыми и с сотыми, например (Триста шестьдесят пять целых пятьдесят пять сотых процентов готовых)

Решение задачи: «Число процентов прописью»

textual
Листинг программы
Function MProzProp$(chislo#) 'Автор MCH (Михаил Ч.), май 2012
    Dim rub$, kop$, ed, des, sot, nadc, razr, i&, m$
    Dim mm
    If chislo >= 1E+15 Or chislo < 0 Then Exit Function
    
    sot = Array("", "сто ", "двести ", "триста ", "четыреста ", "пятьсот ", "шестьсот ", "семьсот ", "восемьсот ", "девятьсот ")
    des = Array("", "", "двадцать ", "тридцать ", "сорок ", "пятьдесят ", "шестьдесят ", "семьдесят ", "восемьдесят ", "девяносто ")
    nadc = Array("десять ", "одиннадцать ", "двенадцать ", "тринадцать ", "четырнадцать ", "пятнадцать ", "шестнадцать ", "семнадцать ", "восемнадцать ", "девятнадцать ")
    ed = Array("", "один ", "два ", "три ", "четыре ", "пять ", "шесть ", "семь ", "восемь ", "девять ", "", "одна ", "две ")
    razr = Array("триллион ", "триллиона ", "триллионов ", "миллиард ", "миллиарда ", "миллиардов ", "миллион ", "миллиона ", "миллионов ", "тысяча ", "тысячи ", "тысяч ", "целая ", "целых ", "целых ")
    
    rub = Left(Format(chislo, "000000000000000.00"), 15)
    kop = Right(Format(chislo, "0.00"), 2)
    m = ""
    If CDbl(rub) = 0 Then m = "ноль "
    For i = 1 To Len(rub) Step 3
        If Mid(rub, i, 3) <> "000" Or i = Len(rub) - 2 Then
            m = m & sot(CInt(Mid(rub, i, 1))) & IIf(Mid(rub, i + 1, 1) = "1", nadc(CInt(Mid(rub, i + 2, 1))), _
                    des(CInt(Mid(rub, i + 1, 1))) & ed(CInt(Mid(rub, i + 2, 1)) + IIf(i = Len(rub) - 5 And CInt(Mid(rub, i + 2, 1)) < 3, 10, 0))) & _
                    IIf(Mid(rub, i + 1, 1) = "1" Or (Mid(rub, i + 2, 1) + 9) Mod 10 >= 4, razr(i + 1), IIf(Mid(rub, i + 2, 1) = "1", razr(i - 1), razr(i)))
        End If
    Next i
        
       If Mid(kop, i, 2) <> "00" Then
            mm = IIf(Mid(kop, 1, 1) = "1", nadc(CInt(Mid(kop, 1, 1))), des(CInt(Mid(kop, 1, 1))) & ed(CInt(Mid(kop, 2, 1))))
       End If
 
    MProzProp = UCase(Left(m, 1)) & Mid(m, 2) & mm & " сот" & IIf(kop \ 10 = 1 Or ((kop + 9) Mod 10) >= 4, "ых", IIf(kop Mod 10 = 1, "ая", "ых")) & " процента"
End Function

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 4.143 из 5
Похожие ответы