Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.06.2008, 23:19   #1
DeDoK
Форумчанин
 
Аватар для DeDoK
 
Регистрация: 05.11.2007
Сообщений: 392
Вопрос Числа в строку

Уважаемые форумчане помогите пожалуйста с моим воросом. Задание такое:
есть числа от 0 до 10000. Как при написании в Edit1 числа от нуля до 10000 вывести надпись
в Label1 где это число написано словами. Например 0 - ноль, 1 - один, 2 - два, и так до 10000.
DeDoK вне форума Ответить с цитированием
Старый 06.06.2008, 23:26   #2
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

В свое время использовал этот пример, найденный где- то в сети
Код:
function convert(nm:cardinal):string;
const s100:array[0..9] of string = ('','сто','двести','триста','четыреста', 'пятьсот','шестьсот','семьсот','восемьсот','девятьсот');
s10:array[0..9] of string = ('','','двадцать','тридцать','сорок', 'пятьдесят','шестьдесят','семьдесят','восемьдесят','девяносто');
s11:array[0..9] of string = ('десять','одиннадцать','двенадцать','тринадцать','четырнадцать', 'пятнадцать','шестнадцать','семнадцать','восемнадцать','девятнадцать');
s1:array[0..9,0..1] of string = (('',''),('один','одна'),('два','две'),('три','три'), ('четыре','четыре'),('пять','пять'),('шесть','шесть'), ('семь','семь'),('восемь','восемь'),('девять','девять'));
s1000:array[0..4,0..2] of string = (('триллионов','триллион','триллиона') ,('миллиардов','миллиард','миллиарда'),('миллионов','миллион','миллиона'), ('тысяч','тысяча','тысячи'),('','',''));
var r:string; i:integer; num:string;
procedure ins(sr:string);
begin
if sr<>'' then r:=r+' '+sr;
end;
function chtoint(ch:char):byte;
begin
result:=0;
case ch of
'0':result:=0;
'1':result:=1;
'2':result:=2;
'3':result:=3;
'4':result:=4;
'5':result:=5;
'6':result:=6;
'7':result:=7;
'8':result:=8;
'9':result:=9;
end;
end;
begin
num:=inttostr(nm);
r:='';
for i:=1 to 15-length(num) do insert('0',num,1);
for i:=0 to 4 do begin
if copy(num,i*3+1,3)='000' then continue;
ins(s100[chtoint(num[i*3+1])]);
if num[i*3+2]='1' then begin ins(s11[chtoint(num[i*3+3])]);
ins(s1000[i,0]);
continue;
end;
ins(s10[chtoint(num[i*3+2])]);
if i=3 then ins(s1[chtoint(num[i*3+3]),1]) else ins(s1[chtoint(num[i*3+3]),0]);
case num[i*3+3] of '0','5','6','7','8','9':ins(s1000[i,0]);
'1':ins(s1000[i,1]);
'2','3','4':ins(s1000[i,2]);
end;
end;
if r<>'' then if r[1]=' ' then delete(r,1,1);
result:=r; 
result[1]:=upchar(result[1]);
end;
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Старый 06.06.2008, 23:34   #3
DeDoK
Форумчанин
 
Аватар для DeDoK
 
Регистрация: 05.11.2007
Сообщений: 392
По умолчанию

спасибо большое. счас буду пробовать
DeDoK вне форума Ответить с цитированием
Старый 06.06.2008, 23:40   #4
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

небольшая поправка
вмето upchar используйте UpCase
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Старый 06.06.2008, 23:46   #5
Карась
Участник клуба
 
Аватар для Карась
 
Регистрация: 26.10.2007
Сообщений: 1,244
По умолчанию

Вот например я приводил лобовой вариант такой программы.
Там можно впринципе до 10000 дописать....

http://programmersforum.ru/showthrea...F2%F0%EE%EA%F3
Умом Россию не понять, пока не выпито ноль пять,
А если выпито ноль пять всё делом кажется не хитрым,
Попытка глубже понимать уже попахивает литром...
Карась вне форума Ответить с цитированием
Старый 06.06.2008, 23:47   #6
DeDoK
Форумчанин
 
Аватар для DeDoK
 
Регистрация: 05.11.2007
Сообщений: 392
По умолчанию

а как ей ползовацца то?
можно так?
Код:
procedure TButton1Click(Sender:TObject); 
begin
Label1.Caption:=convert(Edit1.Text);
end;
или как то по другому? извините если вопрос тупой.
Это для кода Квэнди

Последний раз редактировалось DeDoK; 06.06.2008 в 23:49. Причина: пропустил предложение
DeDoK вне форума Ответить с цитированием
Старый 06.06.2008, 23:53   #7
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

convert(strtoint(Edit1.Text));
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Старый 06.06.2008, 23:54   #8
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

function convert(nm:cardinal):string;
Cardinal
0..4294967295
unsigned 32-bit
System.UInt32
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Старый 07.06.2008, 00:08   #9
DeDoK
Форумчанин
 
Аватар для DeDoK
 
Регистрация: 05.11.2007
Сообщений: 392
По умолчанию

спасибо большое
DeDoK вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
разбить строку Ceprey Общие вопросы C/C++ 10 24.12.2009 20:47
Как проверить строку? nikleb PHP 6 07.07.2008 22:04
Преобразование числа в строку )Игнат( Общие вопросы Delphi 6 06.07.2008 09:32
ДАНЫ 4 ЧИСЛА X Y Z W составит программу найти произведение все положительные нечетные числа Woland-itn Паскаль, Turbo Pascal, PascalABC.NET 3 23.03.2008 21:49
Преобразование числа с плавающей точкой в строку Sibedir Общие вопросы Delphi 14 09.03.2008 21:48