Сабж состоит в следующем, имеется модуль написаный в Visual Basic под Access,в нем содержится функция первоодящая числовое выражение в строку.
У мя извечные проблемы с написанием алгоритмов,посему HELP!Помогите пожалуйста написать алгоритм-блок схему
Текст модуля(все откоментировал):
Attribute VB_Name = «NTF»
Option Compare Database
'Функция преобразует заданное чсило в строковое представление:
Public Function NumToField(Num As String) As String
Dim t, Razr, Fl, L, Zap As Integer
Dim M(11, 7), R(11), Result, MyTemp, rt As String
Fl = 0
Result = «»
'Задание элементов массива, хранящего данные о названиях чисел:
M(0, 1) = » рублей»
M(1, 1) = » один рубль»
M(2, 1) = » два рубля»
M(3, 1) = » три рубля»
M(4, 1) = » четыре рубля»
M(5, 1) = » пять рублей»
M(6, 1) = » шесть рублей»
M(7, 1) = » семь рублей»
M(8, 1) = » восемь рублей»
M(9, 1) = » девять рублей»
M(0, 2) = » »
M(1, 2) = » »
M(2, 2) = » двадцать»
M(3, 2) = » тридцать»
M(4, 2) = » сорок»
M(5, 2) = » пятьдесят»
M(6, 2) = » шестьдесят»
M(7, 2) = » семьдесят»
M(8, 2) = » восемьдесят»
M(9, 2) = » девяносто»
M(0, 3) = » »
M(1, 3) = » сто»
M(2, 3) = » двести»
M(3, 3) = » триста»
M(4, 3) = » четыреста»
M(5, 3) = » пятьсот»
M(6, 3) = » шестьсот»
M(7, 3) = » семьсот»
M(8, 3) = » восемьсот»
M(9, 3) = » девятьсот»
M(0, 4) = » тысяч»
M(1, 4) = » одна тысяча»
M(2, 4) = » две тысячи»
M(3, 4) = » три тысячи»
M(4, 4) = » четыре тысячи»
M(5, 4) = » пять тысяч»
M(6, 4) = » шесть тысяч»
M(7, 4) = » семь тысяч»
M(8, 4) = » восемь тысяч»
M(9, 4) = » девять тысяч»
M(0, 5) = » »
M(1, 5) = » »
M(2, 5) = » двадцать»
M(3, 5) = » тридцать»
M(4, 5) = » сорок»
M(5, 5) = » пятьдесят»
M(6, 5) = » шестьдесят»
M(7, 5) = » семьдесят»
M(8, 5) = » восемьдесят»
M(9, 5) = » девяносто»
M(0, 6) = » »
M(1, 6) = » сто»
M(2, 6) = » двести»
M(3, 6) = » триста»
M(4, 6) = » четыреста»
M(5, 6) = » пятьсот»
M(6, 6) = » шестьсот»
M(7, 6) = » семьсот»
M(8, 6) = » восемьсот»
M(9, 6) = » девятьсот»
R(1) = » десять»
R(2) = » одинадцать»
R(3) = » двенадцать»
R(4) = » тринадцать»
R(5) = » четырнадцать»
R(6) = » пятнадцать»
R(7) = » шеснадцать»
R(8) = » семнадцать»
R(9) = » восемнадцать»
R(10) = » девятнадцать»
Fl = 0
Result = «»
MyTemp = Num
Zap = 0
'Выделение целой части числа (рублей):
If InStr(1, MyTemp, «,») <> 0 Then
L = InStr(1, MyTemp, «,») — 1
Zap = 1
Else: L = Len(MyTemp)
End If
'Анализ целой части поразрядно. Сответственно каждому разряду определяется строка:
For Razr = 1 To L
If Fl <> 1 Then
t = Val(Mid(MyTemp, Razr, 2))
If ((t > 9) And (t < 20)) And ((L — Razr + 1 = 5) Or (L — Razr + 1 = 2)) Then
If L — Razr + 1 = 2 Then Result = Result + R(t — 9) + » рублей»
If L — Razr + 1 = 5 Then Result = Result + R(t — 9) + » тысяч»
Fl = 1
Else
t = Val(Mid(MyTemp, Razr, 1))
Result = Result + M(t, L — Razr + 1)
End If
Else: Fl = 0
End If
Next Razr
'Добавление копеек к строке (копейки остаются цифрами):
If Zap = 1 Then
rt = Mid(MyTemp, InStr(1, MyTemp, «,») + 1, 2)
t = Val(rt)
If t < 10 Then t = t * 10
rt = Str(t)
Else: rt = » 00»
End If
Result = Result + rt + » коп.»
Mid(Result, 2) = Format(Mid(Result, 2, 1), «>»)
NumToField = Result 'Возвращение результата работы функции
End Function
Последние комментарии
- OlegL, 17 декабря в 15:00 → Перекличка 21
- REDkiy, 8 июня 2023 года в 9:09 → Как «замокать» файл для юниттеста в Python? 2
- fhunter, 29 ноября 2022 года в 2:09 → Проблема с NO_PUBKEY: как получить GPG-ключ и добавить его в базу apt? 6
- Иванн, 9 апреля 2022 года в 8:31 → Ассоциация РАСПО провела первое учредительное собрание 1
- Kiri11.ADV1, 7 марта 2021 года в 12:01 → Логи catalina.out в TomCat 9 в формате JSON 1
Я что-то не понял у тебя в масиве записаны числа или их строковое обозначение??