nixp.ru v3.0

26 мая 2017,
пятница,
16:11:37 MSK

DevOps с компанией «Флант»
dronskiy написал 14 июня 2006 года в 20:40 (389 просмотров) Ведет себя неопределенно; открыл 1 тему в форуме.

Сабж состоит в следующем, имеется модуль написаный в 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

Mitroshin

Я что-то не понял у тебя в масиве записаны числа или их строковое обозначение??