20.01.2019, 19:42 [+3 UTC]
в нашей команде: 3 342 чел. | участники онлайн: 9 (рекорд: 20)

:: РЕГИСТРАЦИЯ

:: задать вопрос

:: все разделы

:: правила

:: новости

:: участники

:: доска почёта

:: форум

:: блоги

:: поиск

:: статистика

:: наш журнал

:: наши встречи

:: наша галерея

:: отзывы о нас

:: поддержка

:: руководство

Версия системы:
7.65 (20.01.2019)
JS-v.1.31 | CSS-v.3.35

Общие новости:
01.01.2019, 13:54

Форум:
14.01.2019, 10:08

Последний вопрос:
20.01.2019, 19:20
Всего: 148538

Последний ответ:
20.01.2019, 16:04
Всего: 257615

Последняя рассылка:
20.01.2019, 10:45

Писем в очереди:
0

Мы в соцсетях:

Наша кнопка:

RFpro.ru - здесь вам помогут!

Отзывы о нас:
24.09.2010, 20:45 »
Flavi49
Снимаю шляпу. "Заставили" лентяя наконец почитать. [вопрос № 180001, ответ № 263165]
10.10.2010, 17:03 »
Посетитель - 338793
Спасибо большое) Вы мне очень помогли. Без вас я бы не справилась [вопрос № 180243, ответ № 263397]
12.01.2010, 12:38 »
Кусмарцев Андрей Валерьевич
Премного благодарен, отличный ответ [вопрос № 176003, ответ № 258569]

РАЗДЕЛ • Pascal / Delphi / Lazarus

Создание программ на языках Pascal, Delphi и Lazarus.

[администратор рассылки: Зенченко Константин Николаевич (Старший модератор)]

Лучшие эксперты в этом разделе

Зенченко Константин Николаевич
Статус: Старший модератор
Рейтинг: 491
puporev
Статус: Профессионал
Рейтинг: 195
Степанов Иван /REDDS
Статус: 4-й класс
Рейтинг: 29

Перейти к консультации №:
 

Консультация онлайн # 66929
Раздел: • Pascal / Delphi / Lazarus
Автор вопроса: Тесленко Максим Юревич
Отправлена: 14.12.2006, 11:18
Поступило ответов: 2

Доброе время суток эксперты!
У меня опять проблема((( С клавиатуры вводится число (от нуля до миллиона). Необходимо записать это сумму словами огласно правилам русского языка. и проблема в том что мне наждо сделать это в console aplication(((я заню что есть даже функция но вот в консоли ничего незнаю((((

Заранее благодарен

Состояние: Консультация закрыта

Ответ # 131579 от Алтунин Василий Владимирович

Здравствуйте, Тесленко Максим Юревич!
В приложении ссылки на ряд примеров функции перевода. Работа с консолью хорошо описана тут http://www.gptelecom.ru/Articles/Console/index.htm

Приложение:


Консультировал: Алтунин Василий Владимирович
Дата отправки: 14.12.2006, 11:43

Рейтинг ответа:

0

[подробно]

Сообщение
модераторам

Отправлять сообщения
модераторам могут
только участники портала.
ВОЙТИ НА ПОРТАЛ »
регистрация »

Ответ # 131590 от Gh0stik

Здравствуйте, Тесленко Максим Юревич!

В приложении Вы увидете код рабочего консольного приложения, которое переводит число в его строковое представление...

Так как при выводе текста на кирилице в окно консоли, то необходимо сделать преобразование кодировок таким методом:

sn:= StrAlloc(Length(st) + 1);
AnsiToOem(Pchar(st),sn);
write(sn);
StrDispose(sn);
readln;


В программе используется функция GetRepresentationInWords, которая и делает преобразование числа в его строковое представление (функция была взята со старого доброго DelphiWorld).

Good Luck!!!

Приложение:


Консультировал: Gh0stik
Дата отправки: 14.12.2006, 12:33

Рейтинг ответа:

0

[подробно]

Сообщение
модераторам

Отправлять сообщения
модераторам могут
только участники портала.
ВОЙТИ НА ПОРТАЛ »
регистрация »

Мини-форум консультации № 66929
Сухомлин Кирилл Владимирович

# 1

= общий = | 14.12.2006, 13:15

Gh0stik, при вставке в приложение у вас тоже "полетела" кодировка. Я не знаю, что было у вас, так что даю тот вариант, который был у меня (чкачивал с инета, не проверял) CONST MAX3 = 5; {Максимальное количество триад} A11: ARRAY[1..2] OF STRING[20] = ('одна ', 'две '); A1: ARRAY[0..19] OF STRING [20] = ('', 'один ', 'два ','три ', 'четыре ', 'пять ', 'шесть ', 'семь ', 'восемь ', 'девять ', 'десять ', 'одиннадцать ', 'двенадцать ', 'тринадцать ', 'четырнадцать ', 'пятнадцать ', 'шестнадцать ', 'семнадцать ', 'восемнадцать ', 'девятнадцать '); A10: ARRAY[0..9] OF STRING [20] = ('', 'десять ', 'двадцать ', 'тридцать ', 'сорок ', 'пятьдесят ', 'шестьдесят ', 'семьдесят ', 'восемьдесят ', 'девяносто '); A100: ARRAY[0..9] OF STRING[20]= ('', 'сто ', 'двести ', 'триста ', 'четыреста ', 'пятьсот ', 'шестьсот ', 'семьсот ', 'восемьсот ', 'девятьсот '); {четвертым параметром является обозначение мужского или женского рода, где '0' - женский род; '1' - мужской род. Это дает возможность, например, изменяя "рубли" на "штуки" просто поменять '1' на '0' не меняя кода.} A0: ARRAY[0..MAX3-1, 0..3] OF STRING[20]= (('рубль', 'рубля', 'рублей', '1'),('тысяча', 'тысячи', 'тысяч', '0'), ('миллион', 'миллиона', 'миллионов', '1'), ('миллиард', 'миллиарда', 'миллиардов', '1'), ('триллион', 'триллиона', 'триллионов', '1')); procedure TForm1.Edit1Change(Sender: TObject); VAR Value: LongInt; i100, i10, i1: Integer; V, p, n, i: Integer; begin TRY Value := StrToInt(Edit1.Text); Memo1.Clear; n := 0; {Обработка отрицательного значения и нуля} IF Value <0 THEN BEGIN Memo1.Lines.Add('минус'); Value := -Value; END ELSE IF Value = 0 THEN Memo1.Lines.Add('ноль') ELSE Memo1.Lines.Add(''); REPEAT {Разбивка на триады с конца} V := Value MOD 1000; Value := Value DIV 1000; {Обработка} IF (V > 0) OR (n = 0) THEN BEGIN i100 := V DIV 100; V := V-(i100*100); IF V >= 20 THEN BEGIN i1 := V MOD 10; V := V DIV 10; i10 := V MOD 10; END ELSE BEGIN i1 := V; i10 := 0; END; CASE i1 OF 1: p := 0; 2..4: p := 1; ELSE p := 2; END; {Изменение в зависимости от женского или мужского рода} IF (A0[n,3] = '0') AND ((i1 = 1) OR (i1 = 2)) THEN Memo1.Lines.Insert(1, A100[i100]+A10[i10]+A11[i1]+A0[n,p]) ELSE Memo1.Lines.Insert(1, A100[i100]+A10[i10]+A1[i1]+A0[n,p]); END; Inc(n); {Проверка выхода за максимальное количество триад} IF n > MAX3 THEN Exit; UNTIL Value <= 0; EXCEPT Memo1.Clear; Memo1.Lines.Add('Ошибка'); END end; Мой код, правда, нужно немного довести до ума, прежде чем получится решение требуемой задачи. Ну и AnsiToOEM, надо дописывать.

Gh0stik

# 2

= общий = | 14.12.2006, 14:06

Спасибо за коментарий, уже исправил... Большое спасибо - Сухомлин Кирилл Владимирович!!!

Gh0stik

# 3

= общий = | 14.12.2006, 14:10

2 Сухомлин Кирилл Владимирович.... Совет.... Замените в своем сообщении тэг <PRE> на <CODE>, будет намного читабельней!!! :о)

 

Возможность оставлять сообщения в мини-форумах консультаций доступна только после входа в систему.
Воспользуйтесь кнопкой входа вверху страницы, если Вы зарегистрированы или пройдите простую процедуру регистрации на Портале.

Яндекс Rambler's Top100

главная страница | поддержка | задать вопрос

Время генерирования страницы: 0.27107 сек.

© 2001-2019, Портал RFPRO.RU, Россия
Калашников О.А.  |  Гладенюк А.Г.
Версия системы: 7.65 от 20.01.2019
Версия JS: 1.31 | Версия CSS: 3.35