Для одного проекта мне понадобилась процедура, переводящая номера в числительные. Русский язык я немного подзабыл, поэтому после чтения доков получил код:
Procedure.s ordn(n)
r$=""
d1=n%10
d2=(n%100)/10
d3=n%100:d3=Int(n/100)
nl=Len(Str(n)) ; длина строки
Select d1
Case 0
Case 1:r$="первый"
Case 2:r$="второй"
Case 3:r$="третий"
Case 4:r$="четвертый"
Case 5:r$="пятый"
Case 6:r$="шестой"
Case 7:r$="седьмой"
Case 8:r$="восьмой"
Case 9:r$="девятый"
EndSelect
Select d2
Case 0:
Case 1:
Select d1
Case 0:r$="десятый"
Case 1:r$="одиннадцатый"
Case 2:r$="двенадцатый"
Case 3:r$="тринадцатый"
Case 4:r$="четырнадцатый"
Case 5:r$="пятнадцатый"
Case 6:r$="шестнадцатый"
Case 7:r$="семнадцатый"
Case 8:r$="восемнадцатый"
Case 9:r$="девятнадцатый"
EndSelect
Case 2:
If d1 ;2x
r$="двадцать "+r$
Else
r$="двадцатый"
EndIf
Case 3:
If d1 ;3x
r$="тридцать "+r$
Else
r$="тридцатый"
EndIf
Case 4:
If d1 ;4x
r$="сорок "+r$
Else
r$="сороковой"
EndIf
Case 5:
If d1 ;5x
r$="пятьдесят "+r$
Else
r$="пятидесятый"
EndIf
Case 6:
If d1 ;6x
r$="шестьдесят "+r$
Else
r$="шестидесятый"
EndIf
Case 7:
If d1 ;7x
r$="семьдесят "+r$
Else
r$="семидесятый"
EndIf
Case 8:
If d1 ;8x
r$="восемьдесят "+r$
Else
r$="восьмидесятый"
EndIf
Case 9:
If d1 ;9x
r$="девяносто "+r$
Else
r$="девяностый"
EndIf
EndSelect
Select d3
Case 0:
Case 1:
If d1=0 And d2=0
r$="сотый"
Else
r$="сто "+r$
EndIf
Case 2:
If d1=0 And d2=0
r$="двухсотый"
Else
r$="двести "+r$
EndIf
Case 3:
If d1=0 And d2=0
r$="трехсотый"
Else
r$="триста "+r$
EndIf
Case 4:
If d1=0 And d2=0
r$="четырехсотый"
Else
r$="четыреста "+r$
EndIf
Case 5:
If d1=0 And d2=0
r$="пятисотый"
Else
r$="пятьсот"+r$
EndIf
Case 6:
If d1=0 And d2=0
r$="шестисотый"
Else
r$="шестьсот "+r$
EndIf
Case 7:
If d1=0 And d2=0
r$="семисотый"
Else
r$="семьсот"+r$
EndIf
Case 8:
If d1=0 And d2=0
r$="восьмисотый"
Else
r$="восемьсот"+r$
EndIf
Case 9:
If d1=0 And d2=0
r$="девятисотый"
Else
r$="девятьсот "+r$
EndIf
EndSelect
ProcedureReturn r$
EndProcedure
For i=0 To 999
Debug Str(i)+"="+ordn(i)
Next i
r$=""
d1=n%10
d2=(n%100)/10
d3=n%100:d3=Int(n/100)
nl=Len(Str(n)) ; длина строки
Select d1
Case 0
Case 1:r$="первый"
Case 2:r$="второй"
Case 3:r$="третий"
Case 4:r$="четвертый"
Case 5:r$="пятый"
Case 6:r$="шестой"
Case 7:r$="седьмой"
Case 8:r$="восьмой"
Case 9:r$="девятый"
EndSelect
Select d2
Case 0:
Case 1:
Select d1
Case 0:r$="десятый"
Case 1:r$="одиннадцатый"
Case 2:r$="двенадцатый"
Case 3:r$="тринадцатый"
Case 4:r$="четырнадцатый"
Case 5:r$="пятнадцатый"
Case 6:r$="шестнадцатый"
Case 7:r$="семнадцатый"
Case 8:r$="восемнадцатый"
Case 9:r$="девятнадцатый"
EndSelect
Case 2:
If d1 ;2x
r$="двадцать "+r$
Else
r$="двадцатый"
EndIf
Case 3:
If d1 ;3x
r$="тридцать "+r$
Else
r$="тридцатый"
EndIf
Case 4:
If d1 ;4x
r$="сорок "+r$
Else
r$="сороковой"
EndIf
Case 5:
If d1 ;5x
r$="пятьдесят "+r$
Else
r$="пятидесятый"
EndIf
Case 6:
If d1 ;6x
r$="шестьдесят "+r$
Else
r$="шестидесятый"
EndIf
Case 7:
If d1 ;7x
r$="семьдесят "+r$
Else
r$="семидесятый"
EndIf
Case 8:
If d1 ;8x
r$="восемьдесят "+r$
Else
r$="восьмидесятый"
EndIf
Case 9:
If d1 ;9x
r$="девяносто "+r$
Else
r$="девяностый"
EndIf
EndSelect
Select d3
Case 0:
Case 1:
If d1=0 And d2=0
r$="сотый"
Else
r$="сто "+r$
EndIf
Case 2:
If d1=0 And d2=0
r$="двухсотый"
Else
r$="двести "+r$
EndIf
Case 3:
If d1=0 And d2=0
r$="трехсотый"
Else
r$="триста "+r$
EndIf
Case 4:
If d1=0 And d2=0
r$="четырехсотый"
Else
r$="четыреста "+r$
EndIf
Case 5:
If d1=0 And d2=0
r$="пятисотый"
Else
r$="пятьсот"+r$
EndIf
Case 6:
If d1=0 And d2=0
r$="шестисотый"
Else
r$="шестьсот "+r$
EndIf
Case 7:
If d1=0 And d2=0
r$="семисотый"
Else
r$="семьсот"+r$
EndIf
Case 8:
If d1=0 And d2=0
r$="восьмисотый"
Else
r$="восемьсот"+r$
EndIf
Case 9:
If d1=0 And d2=0
r$="девятисотый"
Else
r$="девятьсот "+r$
EndIf
EndSelect
ProcedureReturn r$
EndProcedure
For i=0 To 999
Debug Str(i)+"="+ordn(i)
Next i
Дальше пойдут тысячные, с которыми пока все грустно.
Комментарии
Отправить комментарий