Воскресенье, 28 Апр 2024, 01:16
Uchi.ucoz.ru
Меню сайта
Форма входа

Категории раздела
Высшая математика [11]
Экономическая социология [95]
Основы Менеджмента [64]
Бухгалтерский учёт [157]
Философия [163]
Мировая Экономика [603]
Бизнес планирование [29]
Финансирование и кредитование инвест [105]
Ценообразование [46]
Гражданское право [196]
Права Человека [173]
Основы Маркетинга [207]
Основы энергосбережения [55]
Информатика [0]
Экология и устойчивое развитие [0]
Физика для студентов [0]
Основы права [0]
Политология [0]
Не стандартные примеры на Delphi [169]
Примеры на Delphi7 [108]
Алгоритмы [94]
API [110]
Pascal [152]
Базы Данных [6]
Новости
Чего не хватает сайту?
500
Статистика
Зарегистрировано на сайте:
Всего: 51635


Онлайн всего: 2
Гостей: 2
Пользователей: 0
Яндекс.Метрика
Рейтинг@Mail.ru

Каталог статей


Главная » Статьи » Студентам » Алгоритмы

Число строкой IX
Посмотрел я что в разделе "Алгоритмы->Преобразование" много советов Число
строкой, но нет преобразования на Украинский язык я подумал может модуль который
я когда-то со славарем писал кому то спасет жизнь - так как у меня он уже года
два работает.

unit
UkrRecog;
{копирайт непомню чей. Был для русских циферок,
а я переделал под
украинские}
{если кто что найдет пришлите

}{by Andrew Tkachenko, proektwo@netcity.ru, Ukraine,

}interface

Const

UkrMonthString : array[1..12] of string[9] = (
'січня', 'лютого', 'березня', 'квiтня', 'травня',
'червня', 'липня', 'серпня', 'вересня', 'жовтня',
'листопада','грудня');
Function
UkrRecognizeAmount(Amount:real;
CurrName,CurrSubname:string):string;

implementation
Uses
Sysutils;

Function
UkrRecognizeAmount(Amount:real;
CurrName,CurrSubname:string):string;
{* CurrName in [грн.]

CurrSubName in [коп.]
Распознается число <= 999 999 999
999.99*}const suffBL:string='
';

suffDCT:string='дцять';
suffNA:string='надцять ';
suffDCM:string='десят';
suffMZ:string='ь';
sot:string='сот';
st:string='ст';
aa:string='а';
ee:string='и'; {e}
ii:string='і'; {и}
oo:string='о';
ov:string='ів';{ов}
C2:string='дв';
C3:string='тpи';
C4:string='чотир';
C5:string='п''ят';
C6:string='шіст';
C7:string='сім';
C8:string='вісім';
C9:string='дев''ят';var

i:byte;
sAmount,sdInt,sdDec:string;
IsMln,IsTha{,IsDcm},IsRange1019:boolean;
currNum,endMlx,sResult:string;begin

if (amount<=0)or(amount>999999999999.99)
then
begin
Result:='<<<< Ошибка в диапазоне
>>>>';
Exit;
end;
STR(Amount:16:2,sAmount);
sdInt:=Copy(sAmount,1,13);
sdDec:=Copy(sAmount,15,2);
IsMln:=false;
//IsDcm:=false;
IsTha:=false;
IsRange1019:=false;
sResult:='';

for i:=1 to 13 do
begin
currNum:=Copy(sdInt,i,1);

if currNum<>suffBL then
begin
case i of
5,6, 7:if currNum<>'0'
then IsMln:=true;
8,9,10:if currNum<>'0'
then IsTha:=true;
end;

if i IN [2,5,8,11]
then {сотни}
begin
if currNum='1' then
sResult:=sResult+st+oo+suffBL;
if currNum='2' then
sResult:=sResult+C2+ii+st+ii+suffBL;
if currNum='3' then
sResult:=sResult+C3+st+aa+suffBL;
if currNum='4' then
sResult:=sResult+C4+ee+st+aa+suffBL;
if currNum='5' then
sResult:=sResult+C5+sot+suffBL;
if currNum='6' then
sResult:=sResult+C6+sot+suffBL;
if currNum='7' then
sResult:=sResult+C7+sot+suffBL;
if currNum='8' then
sResult:=sResult+C8+sot+suffBL;
if currNum='9' then
sResult:=sResult+C9+sot+suffBL;
end;
if i IN [3,6,9,12]
then{десятки}
begin
if currNum='1' then
IsRange1019:=true;
if currNum='2' then
sResult:=sResult+C2+aa+suffDCT+suffBL;
if currNum='3' then
sResult:=sResult+C3+suffDCT+suffBL;
if currNum='4' then
sResult:=sResult+'соpок ';
if currNum='5'
thensResult:=sResult+C5+suffMZ+suffDCM+suffBL;

if currNum='6'
thensResult:=sResult+C6+suffMZ+suffDCM+suffBL;

if currNum='7'
thensResult:=sResult+C7+suffMZ+suffDCM+suffBL;

if currNum='8'
thensResult:=sResult+C8+suffMZ+suffDCM+suffBL;

if currNum='9'
thensResult:=sResult+'дев''ян'+oo+st+oo+suffBL;

end;
if i in [4,7,10,13]
then {единицы}
begin
if (currNum='0') then
if IsRange1019 then
sResult:=sResult+suffDCM+suffMZ+suffBL;
if (currNum='1') then
begin
if (i=13)and(not
IsRange1019) then sResult:=sResult+'одна '
else begin
if (i=10)and(IsRange1019)
then sResult:=sResult+'оди'
else
if (i=10)and(not
IsRange1019) then sResult:=sResult+'одна '
elsesResult:=sResult+'один'{ин};

if IsRange1019 and (i=13)
thensResult:=sResult+'адцять'+suffBL

else
if IsRange1019 then sResult:=sResult+suffNA
else sResult:=sResult+suffBL;
end;
end;
if (currNum='2') then
begin
sResult:=sResult+C2;
if (i=10)and(IsRange1019=False) then
sResult:=sResult+ii
else
if (i=10)or(IsRange1019)
then sResult:=sResult+aa
else sResult:=sResult+{aa}ii;
if IsRange1019 then sResult:=sResult+suffNA
else sResult:=sResult+suffBL;
end;
if (currNum='3') then
begin
sResult:=sResult+C3;
if IsRange1019 then sResult:=sResult+suffNA
else sResult:=sResult+suffBL;
end;
if (currNum='4') then
begin
sResult:=sResult+C4;
if IsRange1019 then sResult:=sResult+suffNA
else sResult:=sResult+ee+suffBL;
end;
if (currNum='5') then
begin
sResult:=sResult+C5;
if IsRange1019 then sResult:=sResult+suffNA
else sResult:=sResult+suffMZ+suffBL;
end;
if (currNum='6') then
begin
sResult:=sResult+C6;
if IsRange1019 then sResult:=sResult+suffNA
else sResult:=sResult+suffMZ+suffBL;
end;
if (currNum='7') then
begin
sResult:=sResult+C7;
if IsRange1019 then sResult:=sResult+suffNA
else sResult:=sResult+suffBL;
end;
if (currNum='8') then
begin
sResult:=sResult+C8;
if IsRange1019 then sResult:=sResult+suffNA
else sResult:=sResult+suffBL;
end;
if (currNum='9') then
begin
sResult:=sResult+C9;
if IsRange1019 then sResult:=sResult+suffNA
else sResult:=sResult+suffMZ+suffBL;
end;
end;

endMlx:='';
case i of
4:begin
if IsRange1019 then endMlx:=ov+suffBL else
if currNum='1' then
endMlx:=suffBL else
if (currNum='2')or(currNum='3')or(currNum='4')
then
endMlx:=aa+suffBL else endMlx:=ov+suffBL;
sResult:=sResult+'мiльярд'+endMlx;
end;
7:if IsMln then
begin
if IsRange1019 then endMlx:=ov+suffBL else
if currNum='1' then
endMlx:=suffBL else
if (currNum='2')or(currNum='3')or(currNum='4')
then
endMlx:=aa+suffBL else endMlx:=ov+suffBL;
sResult:=sResult+'мiльйон'+endMlx;
end;
10:if IsTha then
begin
if IsRange1019 then endMlx:=suffBL else
if currNum='1' then
endMlx:=aa+suffBL else
if (currNum='2')or(currNum='3')or(currNum='4')
then
endMlx:=ii+suffBL else endMlx:=suffBL;
sResult:=sResult+'тисяч'+endMlx;
end;
end;{case}
if i IN [4,7,10,13]
then IsRange1019:=false;
end;{IF}
end;{FOR}

sResult:=sResult+CurrName+','+suffBL+sdDec+suffBL+CurrSubname ;
sResult:=AnsiUpperCase(sResult[1])+Copy(sResult,2,length(sResult)-1);
Result:=sResult;end;

end.
Категория: Алгоритмы | Добавил: Lerka (21 Ноя 2012)
Просмотров: 466 | Рейтинг: 1.0/ 4 Оштрафовать | Жаловаться на материал
Похожие материалы
Всего комментариев: 0

Для блога (HTML)


Для форума (BB-Code)


Прямая ссылка

Профиль
Воскресенье
28 Апр 2024
01:16


Вы из группы: Гости
Вы уже дней на сайте
У вас: непрочитанных сообщений
Добавить статью
Прочитать сообщения
Регистрация
Вход
Улучшенный поиск
Поиск по сайту Поиск по всему интернету
Наши партнеры
Интересное
Популярное статьи
Портфолио ученика начальной школы
УХОД ЗА ВОЛОСАМИ ОЧЕНЬ ПРОСТ — ХОЧУ Я ЭТИМ ПОДЕЛИТ...
Диктанты 2 класс
Детство Л.Н. Толстого
Библиографический обзор литературы о музыке
Авторская программа элективного курса "Практи...
Контрольная работа по теме «Углеводороды»
Поиск
Главная страница
Используются технологии uCoz