Клубове Дир.бг
powered by diri.bg
търси в Клубове diri.bg Разширено търсене

Вход
Име
Парола

Клубове
Dir.bg
Взаимопомощ
Горещи теми
Компютри и Интернет
Контакти
Култура и изкуство
Мнения
Наука
Политика, Свят
Спорт
Техника
Градове
Религия и мистика
Фен клубове
Хоби, Развлечения
Общества
Я, архивите са живи
Клубове Дирене Регистрация Кой е тук Въпроси Списък Купувам / Продавам 23:49 31.05.24 
Клубове/ Компютри и Интернет / Програмисти Пълен преглед*
Информация за клуба
Тема Suma "Slovom" na balgarski ....
Автор Nikolay ()
Публикувано17.06.00 11:17  



Eto vi edna funkcia za prevrahtane na cifri vav suma slovom na balgarski. Ne e pisana ot men - ot Plamen ot Plovdiv e, i e testvana veche 2 godini v edin moi proekt za ABB Eto ia: Function Slovom(Suma As String) 'Функцията е написана от Пламен 'Частично е редактирана от Николай Унгузов Dim duma As String, a(35), d(15), i, s1, s2, s3, s4, s5, z Dim позиция As Integer, дължина As Integer Dim PozZ As Integer Dim TempStr As String Dim hui1 As Currency On Error GoTo er PozZ = InStr(1, Suma, ",", vbTextCompare) 'TempStr = Right(suma, PozZ - 1) TempStr = Str(Val(CCur(Val(Suma)))) If Len(TempStr) > 2 Then Suma = Left(Suma, PozZ + 2) дължина = Len(Suma) позиция = InStr(1, Suma, ",", vbTextCompare) 'Взимам позицията на десетичната запетая If позиция = дължина Then MsgBox "Моля запишете някакво число след запетайката, или я изтрийте !", vbCritical Exit Function End If For z = 1 To дължина If Mid$(Suma, z, 1) <> " " Then duma = duma + Mid$(Suma, z, 1) Next z If позиция = 0 Then duma = duma + "," + "00" Else позиция = дължина - (позиция - 1) 'Позицията е между 2 и 3 If позиция = 2 Then duma = duma + "0" Else 'Няма нужда от добавяне на 0 End If End If Suma = duma duma = "" дължина = Len(Suma) 'Взимам новата дължина Do i = (-7 + (Fix((дължина - 1) / 3) + 1) * 7) If дължина = 3 Then d(дължина) = 0 дължина = дължина - 1 GoTo sledwast End If d(дължина) = Val(Mid$(Suma, (Len(Suma) - дължина + 1), 1)) Select Case дължина Case 1, 4, 7, 10, 13 GoSub edinici Case 2, 5, 8, 11, 14 GoSub desetici Case 6, 9, 12, 15 GoSub stotici Case Else MsgBox "Грешка в модула за отчитане на цифрите", vbCritical Exit Function End Select sledwast: Loop While дължина > 0 For z = (Len(Suma) + 1) To 15 d(z) = 0 Next z mlrd: If (d(15) + d(14)) = 0 Then If d(13) = 1 Then a(30) = " милиард" GoTo mln Else If d(13) = 0 Then a(30) = "" GoTo mln Else a(30) = " милиарда" GoTo mln End If End If Else a(30) = " милиарда" End If mln: If (d(12) + d(11)) = 0 Then If d(10) = 1 Then a(23) = " милион" GoTo hil Else If d(10) = 0 Then a(23) = "" GoTo hil Else a(23) = " милиона" GoTo hil End If End If Else a(23) = " милиона" End If hil: If (d(9) + d(8)) = 0 Then If d(7) = 1 Then a(16) = " хиляда" a(17) = "" GoTo lv Else If d(7) = 0 Then a(16) = "" GoTo lv Else a(16) = " хиляди" GoTo lv End If End If Else a(16) = " хиляди" End If lv: If (d(15) + d(14) + d(13) + d(12) + d(11) + d(10) + d(9) + d(8) + d(7) + d(6) + d(5)) = 0 Then If d(4) = 0 Then GoTo stotinki Else If d(4) = 1 Then a(9) = " лев" GoTo stotinki Else a(9) = " лева" GoTo stotinki End If End If Else a(9) = " лева" GoTo stotinki End If stotinki: If d(2) > 0 Then a(2) = " стотинки" GoTo niz Else If d(1) = 0 Then a(2) = "" GoTo niz Else If d(1) = 1 Then a(2) = " стотинка" GoTo niz Else a(2) = " стотинки" GoTo niz End If End If End If niz: If (d(15) + d(14) + d(13)) > 0 Then s1 = 1 If (d(12) + d(11) + d(10)) > 0 Then s2 = 1 If (d(9) + d(8) + d(7)) > 0 Then s3 = 1 If (d(6) + d(5) + d(4)) > 0 Then s4 = 1 If (d(2) + d(1)) > 0 Then s5 = 1 If s1 + s2 + s3 + s4 >= 2 Then If s4 > 0 Then a(15) = " и" GoTo st Else If s3 > 0 Then a(22) = " и" GoTo st Else If s2 > 0 Then a(29) = " и" GoTo st Else GoTo st End If End If End If End If st: If s5 > 0 Then If s1 + s2 + s3 + s4 > 0 Then If a(6) = "" Then a(8) = " и" a(29) = "": a(22) = "": a(15) = "" End If End If ok: For z = 35 To 1 Step -1 duma = duma + a(z) Next z Do While Left$(duma, 1) = " " duma = Right$(duma, (Len(duma) - 1)) Loop If duma = "" Then duma = "-" Slovom = duma GoTo ex: stotici: Select Case d(дължина) Case 0 a(7 + i) = "" Case 1 a(7 + i) = " сто" Case 2 a(7 + i) = " двеста" Case 3 a(7 + i) = " триста" Case 4 a(7 + i) = " четиристотин" Case 5 a(7 + i) = " петстотин" Case 6 a(7 + i) = " шестстотин" Case 7 a(7 + i) = " седемстотин" Case 8 a(7 + i) = " осемстотин" Case 9 a(7 + i) = " деветстотин" Case Else MsgBox "Възниква непредвидена грешка при стотиците", vbCritical Exit Function End Select дължина = дължина - 1 GoSub desetici Return desetici: d(дължина) = Val(Mid$(Suma, (Len(Suma) - дължина + 1), 1)) Select Case d(дължина) Case 0 a(5 + i) = "" Case 1 a(5 + i) = "" Case 2 a(5 + i) = " двадесет" Case 3 a(5 + i) = " тридесет" Case 4 a(5 + i) = " четиридесет" Case 5 a(5 + i) = " петдесет" Case 6 a(5 + i) = " шестдесет" Case 7 a(5 + i) = " седемдесет" Case 8 a(5 + i) = " осемдесет" Case 9 a(5 + i) = " деветдесет" Case Else MsgBox "Възниква грешка в модула за десетците", vbCritical Exit Function End Select дължина = дължина - 1 GoSub edinici Return edinici: d(дължина) = Val(Mid$(Suma, (Len(Suma) - дължина + 1), 1)) If (Len(Suma) - дължина > 0) And (d(дължина + 1) = 1) Then Select Case d(дължина) Case 0 a(3 + i) = " десет" Case 1 a(3 + i) = " единадесет" Case 2 a(3 + i) = " дванадесет" Case 3 a(3 + i) = " тринадесет" Case 4 a(3 + i) = " четиринадесет" Case 5 a(3 + i) = " петнадесет" Case 6 a(3 + i) = " шестнадесет" Case 7 a(3 + i) = " седемнадесет" Case 8 a(3 + i) = " осемнадесет" Case 9 a(3 + i) = " деветнадесет" Case Else MsgBox "Възниква грешка в модула за числата от 11-19", vbCritical Exit Function End Select If d(дължина + 2) > 0 Then a(6 + i) = " и" дължина = дължина - 1 Return End If Select Case d(дължина) Case 0 a(3 + i) = "" If d(дължина + 1) > 0 Then a(6 + i) = " и" Case 1 If Fix((дължина - 1) / 3) = 0 Then a(3 + i) = " една" Else a(3 + i) = " един" End If Case 2 If (Fix((дължина - 1) / 3) = 0) Or (Fix((дължина - 1) / 3) = 2) Or дължина = 2 Then a(3 + i) = " две" Else a(3 + i) = " два" End If Case 3 a(3 + i) = " три" Case 4 a(3 + i) = " четири" Case 5 a(3 + i) = " пет" Case 6 a(3 + i) = " шест" Case 7 a(3 + i) = " седем" Case 8 a(3 + i) = " осем" Case 9 a(3 + i) = " девет" Case Else MsgBox "Възниква грешка при единиците", vbCritical Exit Function End Select If d(дължина) > 0 Then If d(дължина + 1) > 0 Or d(дължина + 2) > 0 Then a(4 + i) = " и" End If дължина = дължина - 1 Return ex: Exit Function er: MsgBox Err & Error$ End End Function

Цялата тема
ТемаАвторПубликувано
* Suma "Slovom" na balgarski .... Nikolay   17.06.00 11:17
. * Suma "Slovom" na balgarski .... Potencialen emigrant   18.06.00 23:25
. * Suma "Slovom" na balgarski .... MrNice   19.06.00 05:34
Клуб :  


Clubs.dir.bg е форум за дискусии. Dir.bg не носи отговорност за съдържанието и достоверността на публикуваните в дискусиите материали.

Никаква част от съдържанието на тази страница не може да бъде репродуцирана, записвана или предавана под каквато и да е форма или по какъвто и да е повод без писменото съгласие на Dir.bg
За Забележки, коментари и предложения ползвайте формата за Обратна връзка | Мобилна версия | Потребителско споразумение
© 2006-2024 Dir.bg Всички права запазени.