Новости



Visual FoxPro 9 позволяет создавать ещё более производительные приложения баз данных.
Двадцатиление FoxPro! Microsoft принимает поздравления.
Visual FoxPro Toolkit for .NET - более 225 функций VFP 7.0, для языков .NET (подробнее)

Программа вывода суммы прописью.

**********************************************************************
* Функция : Сумма_прописью(Сумма,язык,валюта) *
* Назначение : Получение суммы прописью в разных языках и валютах *
* Сумма ={число} формат="99999999999999999,99" *
* язык ={число} 1- рус|2- анг по умолчанию 1 *
* валюта ={число} 1- руб|2- дол по умолчанию 1 *
**********************************************************************
* Автор : Дмитрий Александрович Тананаев г.Ставрополь *
* E-Mail : tananaev@mail.ru *
* WWW : vfp@narod.ru *
**********************************************************************
* Создана : 14/04/1996 *
* Модификация : 25/06/2000 Добавлена поддержка языков *
**********************************************************************

* пример вызова *
on escape cancel
старт=second()
For сум=0.00 to 9999999999.99 step 123456789.01
?Сум PICTURE "99999999999999999.99"
?Сумма_прописью(сум)
?Сумма_прописью(сум,2,1)
?Сумма_прописью(сум,1,2)
?Сумма_прописью(сум,2,2)
Endfor
?"время "
?? second()-старт
on escape
****************

******************************* Сумма_прописью(Сумма,язык,валюта) *****************************************
Func Сумма_прописью
Para сумма,язык,валюта

If EMPTY(сумма).and.сумма<>0
Retu ' Вызов функции => Сумма_прописью(Сумма,"язык","валюта")';
+chr(10)+' где Сумма={число}, язык={1- рус|2- анг}, валюта={1- руб|2- дол} ';
+chr(10)+'Пример Сумма_прописью(1234567.89,1,2)'
chrchrEndif'
Endif

If EMPTY(язык)
язык = 1
Endif

If EMPTY(валюта)
валюта =1
Endif

**************************** Словарный массив ********************************
If язык=1
Declare слово(3,20)

слово(1,1)=" сто"
слово(1,2)=" двести"
слово(1,3)=" триста"
слово(1,4)=" четыреста"
слово(1,5)=" пятьсот"
слово(1,6)=" шестьсот"
слово(1,7)=" семьсот"
слово(1,8)=" восемьсот"
слово(1,9)=" девятьсот"
слово(1,10)=""

слово(2,1)=""
слово(2,2)=" двадцать"
слово(2,3)=" тридцать"
слово(2,4)=" сорок"
слово(2,5)=" пятьдесят"
слово(2,6)=" шестьдесят"
слово(2,7)=" семьдесят"
слово(2,8)=" восемьдесят"
слово(2,9)=" девяносто"

слово(2,10)=" десять"
слово(2,11)=" одиннадцать"
слово(2,12)=" двенадцать"
слово(2,13)=" тринадцать"
слово(2,14)=" четырнадцать"
слово(2,15)=" пятнадцать"
слово(2,16)=" шестнадцать"
слово(2,17)=" семнадцать"
слово(2,18)=" восемнадцать"
слово(2,19)=" девятнадцать"

слово(3,10)=""
слово(3,1)=" один"
слово(3,2)=" два"
слово(3,3)=" три"
слово(3,4)=" четыре"
слово(3,5)=" пять"
слово(3,6)=" шесть"
слово(3,7)=" семь"
слово(3,8)=" восемь"
слово(3,9)=" девять"

слово(3,11)=" одна"
слово(3,12)=" две"

Declare склонение(6,4)

склонение(1,1)=" триллион"
склонение(1,2)=" триллиона"
склонение(1,3)=" триллионов"
склонение(1,4)=""

склонение(2,1)=" миллиард"
склонение(2,2)=" миллиарда"
склонение(2,3)=" миллиардов"
склонение(2,4)=""

склонение(3,1)=" миллион"
склонение(3,2)=" миллиона"
склонение(3,3)=" миллионов"
склонение(3,4)=""

склонение(4,1)=" тысяча"
склонение(4,2)=" тысячи"
склонение(4,3)=" тысяч"
склонение(4,4)=""

If валюта=1
склонение(5,1)=" рубль"
склонение(5,2)=" рубля"
склонение(5,3)=" рублей"
склонение(5,4)=" Нуль рублей"

склонение(6,1)=" копейка"
склонение(6,2)=" копейки"
склонение(6,3)=" копеек"
склонение(6,4)=" копеек"
Endif
If валюта=2
склонение(5,1)=" доллар"
склонение(5,2)=" доллара"
склонение(5,3)=" долларов"
склонение(5,4)=" Нуль долларов"

склонение(6,1)=" цент"
склонение(6,2)=" цента"
склонение(6,3)=" центов"
склонение(6,4)=" центов"
Endif

Endif
********************************************************************************
If язык=2

Declare слово(3,20)

слово(1,1) = " one hundred"
слово(1,2) = " two hundred"
слово(1,3) = " three hundred"
слово(1,4) = " four hundred"
слово(1,5) = " five hundred"
слово(1,6) = " six hundred"
слово(1,7) = " seven hundred"
слово(1,8) = " eight hundred"
слово(1,9) = " nine hundred"
слово(1,10) = ""

слово(2,1) = ""
слово(2,2) = " twenty"
слово(2,3) = " thirty"
слово(2,4) = " forty"
слово(2,5) = " fifty"
слово(2,6) = " sixty"
слово(2,7) = " seventy"
слово(2,8) = " eighty"
слово(2,9) = " ninety"

слово(2,10) = " ten"
слово(2,11) = " eleven"
слово(2,12) = " twelve"
слово(2,13) = " thirteen"
слово(2,14) = " fourteen"
слово(2,15) = " fifteen"
слово(2,16) = " sixteen"
слово(2,17) = " seventeen"
слово(2,18) = " eighteen"
слово(2,19) = " nineteen"

слово(3,10) = ""
слово(3,1) = " one"
слово(3,2) = " two"
слово(3,3) = " three"
слово(3,4) = " four"
слово(3,5) = " five"
слово(3,6) = " six"
слово(3,7) = " seven"
слово(3,8) = " eight"
слово(3,9) = " nine"

слово(3,11) = " one"
слово(3,12) = " two"

Declare склонение(6,4)

склонение(1,1) = " trillion"
склонение(1,2) = " trillion"
склонение(1,3) = " trillions"
склонение(1,4) = ""

склонение(2,1) = " milliard"
склонение(2,2) = " milliard"
склонение(2,3) = " milliards"
склонение(2,4) = ""

склонение(3,1) = " million"
склонение(3,2) = " million"
склонение(3,3) = " millions"
склонение(3,4) = ""

склонение(4,1) = " thousand"
склонение(4,2) = " thousands"
склонение(4,3) = " thousands"
склонение(4,4) = ""

If валюта=1
склонение(5,1) = " rouble"
склонение(5,2) = " rouble"
склонение(5,3) = " roubles"
склонение(5,4) = " Zero of roubles"

склонение(6,1) = " copeck"
склонение(6,2) = " copecks"
склонение(6,3) = " copecks"
склонение(6,4) = " copecks"
Endif

If валюта=2

склонение(5,1) = " dollar"
склонение(5,2) = " dollar"
склонение(5,3) = " dollars"
склонение(5,4) = " Zero of dollars "

склонение(6,1) = " cent"
склонение(6,2) = " cents"
склонение(6,3) = " cents"
склонение(6,4) = " cents"
Endif

Endif
********************************************************************************
строка=''
Summa=left(STR(сумма,20,2),17)
Declare тройка(5)
номер=1
Do WHILE номер<=5
тройка(номер)=SUBSTR(SUMMA,номер*3,3)
строка=строка+тритон(тройка(номер),номер)
номер=номер+1
Enddo


* выделяем копейки
копеек=right(str(сумма-int(сумма),4,2),2)

* десятки
десятки=val(left(копеек,1))

* еденицы
единицы=val(right(копеек,1))

падеж=1
* фонемы
If единицы>1.and.единицы<=4
падеж=2
Endif

If единицы>4.or.единицы=0
падеж=3
Endif

If десятки=1
падеж=4
Endif
строка=UPPER(left(строка,2))+substr(строка,3,len(строка)-2)
строка=строка+" "+right(str(сумма-int(сумма),4,2),2)+склонение(6,падеж)
Retu строка

******************************* Тритон(триада,группа) *****************************************
Func тритон
Para триада,группа
падеж=3
символ1=VAL(SUBSTR(триада,1,1))

If символ1=0
символ1=10
Endif

символ3=VAL(SUBSTR(триада,3,1))
If символ3<5
падеж=2
Endif

If символ3<2
падеж=1
Endif

If символ3=0
символ3=10
падеж=3
Endif

If группа=4

If символ3=1
символ3=11
Endif

If символ3=2
символ3=12
Endif

Endif

символ2=VAL(SUBSTR(триада,2,1))

If символ2=1
символ2=VAL(SUBSTR(триада,2,2))
символ3=10
падеж=3
Endif

If символ2=0
символ2=1
Endif
пропись=''

If VAL(SUBSTR(триада,1,3))=0
падеж=4
Endif
пропись=слово(1,символ1)+слово(2,символ2)+слово(3,символ3)+склонение(группа,падеж)
Retu пропись



Новое на сайте

  • Обновлен портфель программиста

    Добавлены: Установка HTML Help (Создание справочной системы), Imagedit.zip - Графический редактор ( ico и bmp), Библиотека локализации HTML Help (Русский)
  • Новые примеры программ

    Установка библиотек, Игровая программа "Охота на лис", Установка библиотек "Охота на лис", plastic -"Платежки", Библиотеки (на FPD26), platan -"Платежки" (на Clipper 5.2)
  • Обновленна справка

    Подсказки, технология программирования и использование Visual FoxPro. Команды, функции, операторы, объекты, свойства, события и методы.