Другие языки программирования и технологии
Язык VBA помогите составить задачу!
Составить программу, которая читает натуральное число N в десятичном представлении (N £ 10000), а на выходе выдает это же число в десятичном представлении и на естественном языке. Например, 7 Þ семь; 204 Þ двести четыре; 52 Þ пятьдесят два.
вот вам тексты моих модулей написанных в 2006 г.
Если разберетесь, то функция пропись заработает у вас, если нет погуглите на эту тему
Public sss1(5), ppp1(5), ppp2(5), edin(20), desat(10), sotni(9), mil(6) As Variant
Function propis(zzz As Currency) As String
Dim qqq1, okon As String
i2 = 0
zzz = Int(zzz)
jjj = zzz Mod 1000
If zzz = 0 Then
propis = "ноль"
Else
propis = " "
End If
While zzz > 0 Or jjj > 0
n1 = jjj Mod 20
n2 = Int((jjj Mod 100) / 10)
n3 = Int(jjj / 100)
n4 = jjj Mod 10
' qqq1 = IIf(n1 > 0 And n2 < 2, edin(n1), edin(n4))
okon = ""
If i2 <> 1 Then
okon = ""
edin(1) = " один"
edin(2) = " два"
Else
edin(1) = " одна"
edin(2) = " две"
End If
If n1 > 0 And n2 < 2 Then
qqq1 = edin(n1)
n5 = n1
Else
qqq1 = edin(n4)
n5 = n4
End If
If i2 = 1 Then
Select Case n5
Case 1
okon = "а"
Case 2 To 4
okon = "и"
Case Else
okon = ""
End Select
Else
Select Case n5
Case 1
okon = ""
Case 2 To 4
okon = "а"
Case Else
okon = "ов"
End Select
If i2 = 0 Then
okon = ""
End If
End If
propis = sotni(n3) + IIf(n2 > 1, desat(n2), "") + qqq1 + mil(i2) + okon + propis
i2 = i2 + 1
zzz = Int(zzz / 1000)
jjj = zzz Mod 1000
Wend
End Function
Sub init_var()
sss1(1) = 174780
ppp1(1) = 5
ppp2(1) = 20
sss1(2) = 466080
ppp1(2) = 8
ppp2(2) = 15
sss1(3) = 2330400
ppp1(3) = 13
ppp2(3) = 12
sss1(4) = 6991200
ppp1(4) = 15
ppp2(4) = 9
sss1(5) = 0
ppp1(5) = 20
ppp2(5) = 7
edin(1) = " один"
edin(2) = " два"
edin(3) = " три"
edin(4) = " четыре"
edin(5) = " пять"
edin(6) = " шесть"
edin(7) = " семь"
edin(8) = " восемь"
edin(9) = " девять"
edin(10) = " десять"
edin(11) = " одиннадцать"
edin(12) = " двенадцать"
edin(13) = " тринадцать"
edin(14) = " четырнадцать"
edin(15) = " пятнадцать"
edin(16) = " шестнадцать"
edin(17) = " семнадцать"
edin(18) = " восемнадцать"
edin(19) = " девятнадцать"
edin(20) = " ноль"
desat(1) = " десять"
desat(2) = " двадцать"
desat(3) = " тридцать"
desat(4) = " сорок"
desat(5) = " пятьдесят"
desat(6) = " шестьдесят"
desat(7) = " семьдесят"
desat(8) = " восемьдесят"
desat(9) = " девяносто"
sotni(0) = ""
sotni(1) = " сто"
sotni(2) = " двести"
sotni(3) = " триста"
sotni(4) = " четыреста"
sotni(5) = " пятьсот"
sotni(6) = " шестьсот"
sotni(7) = " семьсот"
sotni(8) = " восемьсот"
sotni(9) = " девятьсот"
mil(0) = ""
mil(1) = " тысяч"
mil(2) = " миллион"
mil(3) = " миллиард"
mil(4) = " триллион"
End Sub
Sub Auto_Open()
'....
Call init_var
'....
end sub
Если разберетесь, то функция пропись заработает у вас, если нет погуглите на эту тему
Public sss1(5), ppp1(5), ppp2(5), edin(20), desat(10), sotni(9), mil(6) As Variant
Function propis(zzz As Currency) As String
Dim qqq1, okon As String
i2 = 0
zzz = Int(zzz)
jjj = zzz Mod 1000
If zzz = 0 Then
propis = "ноль"
Else
propis = " "
End If
While zzz > 0 Or jjj > 0
n1 = jjj Mod 20
n2 = Int((jjj Mod 100) / 10)
n3 = Int(jjj / 100)
n4 = jjj Mod 10
' qqq1 = IIf(n1 > 0 And n2 < 2, edin(n1), edin(n4))
okon = ""
If i2 <> 1 Then
okon = ""
edin(1) = " один"
edin(2) = " два"
Else
edin(1) = " одна"
edin(2) = " две"
End If
If n1 > 0 And n2 < 2 Then
qqq1 = edin(n1)
n5 = n1
Else
qqq1 = edin(n4)
n5 = n4
End If
If i2 = 1 Then
Select Case n5
Case 1
okon = "а"
Case 2 To 4
okon = "и"
Case Else
okon = ""
End Select
Else
Select Case n5
Case 1
okon = ""
Case 2 To 4
okon = "а"
Case Else
okon = "ов"
End Select
If i2 = 0 Then
okon = ""
End If
End If
propis = sotni(n3) + IIf(n2 > 1, desat(n2), "") + qqq1 + mil(i2) + okon + propis
i2 = i2 + 1
zzz = Int(zzz / 1000)
jjj = zzz Mod 1000
Wend
End Function
Sub init_var()
sss1(1) = 174780
ppp1(1) = 5
ppp2(1) = 20
sss1(2) = 466080
ppp1(2) = 8
ppp2(2) = 15
sss1(3) = 2330400
ppp1(3) = 13
ppp2(3) = 12
sss1(4) = 6991200
ppp1(4) = 15
ppp2(4) = 9
sss1(5) = 0
ppp1(5) = 20
ppp2(5) = 7
edin(1) = " один"
edin(2) = " два"
edin(3) = " три"
edin(4) = " четыре"
edin(5) = " пять"
edin(6) = " шесть"
edin(7) = " семь"
edin(8) = " восемь"
edin(9) = " девять"
edin(10) = " десять"
edin(11) = " одиннадцать"
edin(12) = " двенадцать"
edin(13) = " тринадцать"
edin(14) = " четырнадцать"
edin(15) = " пятнадцать"
edin(16) = " шестнадцать"
edin(17) = " семнадцать"
edin(18) = " восемнадцать"
edin(19) = " девятнадцать"
edin(20) = " ноль"
desat(1) = " десять"
desat(2) = " двадцать"
desat(3) = " тридцать"
desat(4) = " сорок"
desat(5) = " пятьдесят"
desat(6) = " шестьдесят"
desat(7) = " семьдесят"
desat(8) = " восемьдесят"
desat(9) = " девяносто"
sotni(0) = ""
sotni(1) = " сто"
sotni(2) = " двести"
sotni(3) = " триста"
sotni(4) = " четыреста"
sotni(5) = " пятьсот"
sotni(6) = " шестьсот"
sotni(7) = " семьсот"
sotni(8) = " восемьсот"
sotni(9) = " девятьсот"
mil(0) = ""
mil(1) = " тысяч"
mil(2) = " миллион"
mil(3) = " миллиард"
mil(4) = " триллион"
End Sub
Sub Auto_Open()
'....
Call init_var
'....
end sub
Похожие вопросы
- Помогите составить задачу на языке VBA
- Помогите составить задачу в Delphi
- Помогите составить задачу в Delphi
- Помогите составить задачу в Pascal
- Помогите составить задачу по паскалю
- помогите составить задачи на с++
- Помогите составить задачу на Pascal или С++
- Простая задача на VBA ! Помогите советом ...
- Решение задач по программированию в VBA...помогите....Пожалуйста
- СОЗДАНИЕ ПРОГРАММ С ЦИКЛИЧЕСКОЙ СТРУКТУРОЙ Составьте блок-схему и программу на языке VBA, которая проверяет: (СРОЧНО!)