|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
29.03.2008, 19:13 | #1 |
Пока ещё
Форумчанин
Регистрация: 26.02.2008
Сообщений: 116
|
Дано четырехзначное число, заданное в символьном виде, например, '1954'. Напечатать его текстом, например
Дано четырехзначное число, заданное в символьном виде, например, '1954'. Напечатать его текстом, например, 'тысяча девятьсот пятьдесят четыре'.
Заранее спасибо
Я мегапрограммер потерявший память.
Если кому помог, поставте '+' я буду благодарен |
29.03.2008, 19:22 | #2 |
Участник клуба
Регистрация: 26.10.2007
Сообщений: 1,244
|
Решение в лоб:
1. Создаём массив с нужными словами. 2. Пользуясь циклом и оператором выбора case выводим результат.
Умом Россию не понять, пока не выпито ноль пять,
А если выпито ноль пять всё делом кажется не хитрым, Попытка глубже понимать уже попахивает литром... |
29.03.2008, 19:26 | #3 |
Пока ещё
Форумчанин
Регистрация: 26.02.2008
Сообщений: 116
|
Надо к кажному числу тысяча,две тысячи, три тысячи.... как его сортировать?
Можешь создать этот массив? Буду очень благодарен
Я мегапрограммер потерявший память.
Если кому помог, поставте '+' я буду благодарен |
29.03.2008, 19:35 | #4 |
Участник клуба Подтвердите свой е-майл
Регистрация: 14.12.2007
Сообщений: 1,434
|
A[1]:='тысяча';
A[2]:='две тысячи'; ........... A[10]:='десять тысячь' A[11]:='сто'; A[12]:='двести'; .................. A[21]:='одинадцать'; ........................... A[29]:='девятнадцать'; A[30]:='двадцать'; A[31]:='тридцать'; ....................... A[42]:='один'; A[43]:='два'; ................ только сформирой в нужном порядке
Проповедую design patterns, верую в MVC, доверяю eXtrime programming.
|
30.03.2008, 13:45 | #5 |
Пока ещё
Форумчанин
Регистрация: 26.02.2008
Сообщений: 116
|
Можете сортировку написать ,у меня пишет только первое значение
Я мегапрограммер потерявший память.
Если кому помог, поставте '+' я буду благодарен |
30.03.2008, 14:52 | #6 |
Форумчанин
Регистрация: 28.03.2008
Сообщений: 672
|
по-моему проще будет просто делить число нацело на 10(по-моему команада mod) остаток сравнивать с числом и писать его...
напр. 1954 делим на 10 получаем 195 и остаток 4, это остаток в переменную и сравниваем case' ом со значениями... потом 195 делим на 10 получаем 19 и 5 остаток и так далее... или еще чтобы не делить делаем строку из этого числа и по очереди по позициям берем символы преобразовываем в число и опять же case... вот так... НО это только работает с числами после двадцати, до двадцати надо руками писать |
30.03.2008, 14:55 | #7 |
Участник клуба
Регистрация: 26.10.2007
Сообщений: 1,244
|
Ты бы код показал...мало ли что ты там написал у себя в программе.
Как вариант решения "в лоб" предлагаю такой вариант: Код:
Дя увеличения диапазона до 9999 нужно тупо дописать в блоки Case нужные строки. Так как Delphi незахотела выводить Русский текст пришлось написать необходимую функцию. Писалось для консоли. АДД: Ф топку массивы.. без них проще получается. А также я заметил что моя программа невыводит числа 1521, 3241, 4441 и т.д. Я просто забыл коечто дописать, вот автору как раз этопоможет тщательней изучить код Незабудь про брекпоинты.. при отладке вещь незаменимая.
Умом Россию не понять, пока не выпито ноль пять,
А если выпито ноль пять всё делом кажется не хитрым, Попытка глубже понимать уже попахивает литром... Последний раз редактировалось Карась; 30.03.2008 в 15:30. |
30.03.2008, 16:31 | #8 |
Форумчанин
Регистрация: 28.03.2008
Сообщений: 672
|
а вот что у меня получилось, выводит все числа до 9999 включительно
писал в делфи... procedure TForm1.Button1Click(Sender: TObject); var i:integer; a:integer; b:integer; c:integer; stEd:string; stDes:string; stSot:string; stTus:string; label labe,labe1,labe2; begin stEd:=''; stDes:=''; stSot:=''; stTus:=''; a:=strToInt(edit1.Text); labe: if a<20 then begin case a of 0: stEd:='ноль'; 1: stEd:='один'; 2: stEd:='два'; 3: stEd:='три'; 4: stEd:='четыре'; 5: stEd:='пять'; 6: stEd:='шесть'; 7: stEd:='сем'; 8: stEd:='восем'; 9: stEd:='девять'; 10: stEd:='десять'; 11: stEd:='одиннадцать'; 12: stEd:='двеннадцать'; 13: stEd:='тринадцать'; 14: stEd:='четырнадцать'; 15: stEd:='пятнадцать'; 16: stEd:='шестнадцать'; 17: stEd:='семнадцать'; 18: stEd:='восемнадцать'; 19: stEd:='девятнадцать'; end; end else if a<100 then labe1: begin i:=a div 10 ; case i of 2: stDes:='двадцать '; 3: stDes:='тридцать '; 4: stDes:='сорок '; 5: stDes:='пятьдесят '; 6: stDes:='шестьдесят '; 7: stDes:='семдесят '; 8: stDes:='восемдесят '; 9: stDes:='девяносто '; end; a:=a mod 10; if a<>0 then goto labe; end else if a<1000 then labe2: begin c:=a div 100; case c of 1: stSot:='сто '; 2: stSot:='двести '; 3: stSot:='триста '; 4: stSot:='четыреста '; 5: stSot:='пятьсот '; 6: stSot:='шестьсот '; 7: stSot:='семсот '; 8: stSot:='восемсот '; 9: stSot:='девятьсот '; end; a:=a mod 100; if a<>0 then goto labe1; end else if a<10000 then begin b:=a div 1000; case b of 1: stTus:='Одна тысяча '; 2: stTus:='Две тысячи '; 3: stTus:='Три тысячи '; 4: stTus:='Четыре тысячи '; 5: stTus:='Пять тысяч '; 6: stTus:='Шесть тысяч '; 7: stTus:='Сем тысяч '; 8: stTus:='Восем тысяч '; 9: stTus:='Девять тысяч '; end; a:=a mod 1000; if a<>0 then goto labe2; end; edit2.Text:=stTus+stSot+stDes+stEd; end; end. |
31.03.2008, 00:07 | #9 | |
Пока ещё
Форумчанин
Регистрация: 26.02.2008
Сообщений: 116
|
Цитата:
Ешё несколько ошибок но так огромное спасибо. Из за ошибки тож я зато разобрался)
Я мегапрограммер потерявший память.
Если кому помог, поставте '+' я буду благодарен |
|
31.03.2008, 01:47 | #10 | |
Пользователь
Регистрация: 29.03.2008
Сообщений: 51
|
Карась
Со всем согласен, но вот вопрос: меня глючит уже под ночь или вот в этом отрывке у тебя в коде Цитата:
Последний раз редактировалось Valter; 31.03.2008 в 01:49. |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Создание графиков(например декартов лист) | DUMOH | Компоненты Delphi | 10 | 21.12.2008 23:10 |
Как печатать в верхней подстроке в Delphi например 2 в квадрате | Moel | Общие вопросы Delphi | 3 | 19.06.2008 15:30 |
игра про карты например (дурак) | alex@x | Gamedev - cоздание игр: Unity, OpenGL, DirectX | 2 | 06.12.2007 15:53 |
как наклонить метку (Label) с текстом, например, на 45 грудусов? | krem | Компоненты Delphi | 2 | 09.05.2007 19:20 |
как сделать в memo строку не 256 символов, а 1024 например. | Alar | Компоненты Delphi | 0 | 29.10.2006 18:46 |