Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Integer прописью


Страницы:   1 2

xyz ©   (2002-08-22 02:10:00) 

Здраствуйте!

Подскажите пожалуйста, сильно ли замедлит работу алгоритма функция inttostr()?

Или предложите как продолжить алгоритм до миллионов.
=======================================================
unit inttowrd;
interface

var
ed : array[0..19] of string=("","один","два","три","четыре",
"пять","шесть","семь","восемь","девять","десять","одиннадцать","двенадцать",
"тринадцать","четырнадцать","пятнадцать","шестнадцать","семнадцать",
"восемнадцать","девятнадцать");
dec : array[2..9] of string=("двадцать","тридцать","сорок","пятьдесят",
"шестьдесят","семьдесят","восемьдесят","девяносто");
sot : array[1..9] of string=("сто","двести","триста","четыреста","пятьсот",
"шестьсот","семьсот","восемьсот","девятьсот");

function inttowd(n : integer) : string;

implementation

function ed32(n : integer) : string;
begin
result := ed[n];
end;

function dec32(n : integer) : string;
begin
case n of
0..19 : result := ed32(n);
20..29 : result := dec[2]+" "+ed[n-20];
30..39 : result := dec[3]+" "+ed[n-30];
40..49 : result := dec[4]+" "+ed[n-40];
50..59 : result := dec[5]+" "+ed[n-50];
60..69 : result := dec[6]+" "+ed[n-60];
70..79 : result := dec[7]+" "+ed[n-70];
80..89 : result := dec[8]+" "+ed[n-80];
90..99 : result := dec[9]+" "+ed[n-90];
end;
end;

function inttowd(n : integer) : string;
begin
case n of
0..99 : result :=dec32(n);
100..199 : result := sot[1]+" "+dec32(n-100);
200..299 : result := sot[2]+" "+dec32(n-200);
300..399 : result := sot[3]+" "+dec32(n-300);
400..499 : result := sot[4]+" "+dec32(n-400);
500..599 : result := sot[5]+" "+dec32(n-500);
600..699 : result := sot[6]+" "+dec32(n-600);
700..799 : result := sot[7]+" "+dec32(n-700);
800..899 : result := sot[8]+" "+dec32(n-800);
900..999 : result := sot[9]+" "+dec32(n-900);
end;
end;

end.


zavdim   (2002-08-22 09:39:00) [21]

Если надо то можно и до 10^!!! сделать. Я для говорения делал до 10^36-1. Если надо - пришлю. А в какой задаче применяя такое может возникнуть проблема скорости?
Ну а можно так например:

if n>100 then
result := sot[n div 100] + "" + dec32(n mod 100);

Вот, в таком духе значит.


Sam Stone   (2002-08-22 09:01:00) [22]

тебе какая скорость нужна? Если время увеличивается не больше, чем на 0.5 сек, то, по-моему, не стоит страдать.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо