Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Алгоритм
 
 автор: Dronskiy   (30.11.-1 в 00:00)
 
 

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

  Ответить  
 
 автор: osmor   (30.11.-1 в 00:00)
 
 

так что надо-то?

  Ответить  
 
 автор: Dronskiy   (30.11.-1 в 00:00)
 
 

Re: Алгоритм Алгоритм нарисовать:).Очень надо пожалуйста HELP!

  Ответить  
 
 автор: Dronskiy   (30.11.-1 в 00:00)
 
 

Re: Алгоритм Алгоритм нарисовать:).Очень надо пожалуйста HELP!

  Ответить  
 
 автор: Palarm   (30.11.-1 в 00:00)
 
 

Re: Алгоритм А я вот слил из Инета функцию преобразования числа в строку и работает он себе и работает. А чего там написано, какой алгоритм, не все ли равно? В Инете только ленивый не наткнется на такие приблуды. Я адрес не помню, домой надо бежать, но по моему и здесь она где то мелькала, потому как тема эта жеваная-пережеваная...

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList