Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2003.10.16;
Скачать: [xml.tar.bz2];

Вниз

перевод цифр в их словарные значения   Найти похожие ветки 

 
Алекси   (2003-09-26 18:31) [0]

помогите кто может: перешлите алгоритм перевода цифр в буквенные значения например : 423 = четыреста двадцать три
буду очень признателен


 
Rem   (2003-09-26 18:42) [1]

Не судите, люди добрые, писал недельку назад, ночью, на УПСе :D

type
TCaseForm = (cfOne, cfTwo, cfFive);
TSex = (sMale, sFemale);

function SpellRub(a_Money: currency): string;
var
S: string;
CF: TCaseForm;
T: string;
R: string;
C: string;

procedure TriadaToWords(a_sTriada: string; a_Sex: TSex; a_bSupressZero: boolean;
var a_sWords: string; var a_CaseForm: TCaseForm);
var
S: string;
begin
ASSERT(a_sTriada <> "");
a_CaseForm := cfFive;
if (Length(a_sTriada) = 1) then a_sTriada := "00" + a_sTriada;
if (Length(a_sTriada) = 2) then a_sTriada := "0" + a_sTriada;
if (a_sTriada = "000") then
begin
if a_bSupressZero then
a_sWords := ""
else
a_sWords := "ноль ";
Exit;
end;
case a_sTriada[2] of
"1": case a_sTriada[3] of
"0": S := "десять ";
"1": S := "одиннадцать ";
"2": S := "двенадцать ";
"3": S := "тринадцать ";
"4": S := "четырнадцать ";
"5": S := "пятнадцать ";
"6": S := "шестнадцать ";
"7": S := "семнадцать ";
"8": S := "восемнадцать ";
"9": S := "девятнадцать ";
end
else
begin
case a_sTriada[3] of
"1": begin S := IfThen(a_Sex = sMale, "один ", "одна "); a_CaseForm := cfOne; end;
"2": begin S := IfThen(a_Sex = sMale, "два ", "две "); a_CaseForm := cfTwo; end;
"3": begin S := "три "; a_CaseForm := cfTwo; end;
"4": begin S := "четыре "; a_CaseForm := cfTwo; end;
"5": S := "пять ";
"6": S := "шесть ";
"7": S := "семь ";
"8": S := "восемь ";
"9": S := "девять ";
end;
case a_sTriada[2] of
"2": S := "двадцать " + S;
"3": S := "тридцать " + S;
"4": S := "сорок " + S;
"5": S := "пятьдесят " + S;
"6": S := "шестьдесят " + S;
"7": S := "семьдесят " + S;
"8": S := "восемьдесят " + S;
"9": S := "девяносто " + S;
end;
end;
end;
case a_sTriada[1] of
"1": S := "сто " + S;
"2": S := "двести " + S;
"3": S := "триста " + S;
"4": S := "четыреста " + S;
"5": S := "пятьсот " + S;
"6": S := "шестьсот " + S;
"7": S := "семьсот " + S;
"8": S := "восемьсот " + S;
"9": S := "девятьсот " + S;
end;
a_sWords := S;
end;

begin
S := CurrToStr(Trunc(a_Money));
if (Length(S) mod 3 = 1) then S := "00" + S;
if (Length(S) mod 3 = 2) then S := "0" + S;
while (Length(S) > 0) do
begin
T := Copy(S, 1, 3);
case (Length(S) - 1) div 3 of
0:
begin
TriadaToWords(T, sMale, Result <> "", R, CF);
if (R <> "") then
case CF of
cfOne: R := R + "рубль";
cfTwo: R := R + "рубля";
cfFive: R := R + "рублей";
end
else
R := "рублей";
end;
1:
begin
TriadaToWords(T, sFemale, Result <> "", R, CF);
if (R <> "") then
case CF of
cfOne: R := R + "тысяча ";
cfTwo: R := R + "тысячи ";
cfFive: R := R + "тысяч ";
end;
end;
2:
begin
TriadaToWords(T, sMale, Result <> "", R, CF);
if (R <> "") then
case CF of
cfOne: R := R + "миллион ";
cfTwo: R := R + "миллиона ";
cfFive: R := R + "миллионов ";
end;
end;
3:
begin
TriadaToWords(T, sMale, Result <> "", R, CF);
if (R <> "") then
case CF of
cfOne: R := R + "миллиард ";
cfTwo: R := R + "миллиарда ";
cfFive: R := R + "миллиардов ";
end;
end;
4:
begin
TriadaToWords(T, sMale, Result <> "", R, CF);
if (R <> "") then
case CF of
cfOne: R := R + "триллион ";
cfTwo: R := R + "триллиона ";
cfFive: R := R + "триллионов ";
end;
end;
end;
Delete(S, 1, 3);
Result := Result + R;
end;
Result := AnsiUpperCase(Result[1]) + Copy(Result, 2, Length(Result) - 1);
C := Format("%2.2d", [trunc(frac(a_Money) * 100)]);
Result := Result + " " + C + " коп.";
end;



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2003.10.16;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.009 c
1-51213
SergP
2003-10-04 09:14
2003.10.16
Как разбить форму на части?


3-51060
Smashich
2003-09-26 17:35
2003.10.16
Grant


14-51487
_Nicola_
2003-09-26 17:29
2003.10.16
Про суверенное государство Зимбабве


1-51271
Charly
2003-10-06 23:32
2003.10.16
Хук на окно


7-51546
AllDontFire
2003-07-30 17:32
2003.10.16
Как программно отключить сетевуху?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский