22.06.2018, 23:19 [+3 UTC]
в нашей команде: 2 854 чел. | участники онлайн: 4 (рекорд: 21)

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

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

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

:: правила

:: новости

:: участники

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

:: форум

:: блоги

:: поиск

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

:: наш журнал

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

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

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

:: поддержка

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

Версия системы:
7.47 (16.04.2018)

Общие новости:
13.04.2018, 10:33

Форум:
18.06.2018, 08:55

Последний вопрос:
22.06.2018, 22:40

Последний ответ:
22.06.2018, 09:23

Последняя рассылка:
22.06.2018, 17:15

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

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

Наша кнопка:

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

Отзывы о нас:
19.04.2010, 18:43 »
Vitvol
Спасибо Вам огромное!!!!!! [вопрос № 177926, ответ № 260912]
27.09.2009, 22:32 »
Sel
Большое спасибо за подробные рекомендации! [вопрос № 172703, ответ № 254772]

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

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

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

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

Зенченко Константин Николаевич
Статус: Модератор
Рейтинг: 272
Асмик Гаряка
Статус: Советник
Рейтинг: 34
mklokov
Статус: 6-й класс
Рейтинг: 23

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

Консультация онлайн # 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

Посетитель

ID: 17049

# 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, надо дописывать.


Посетитель

ID: 14422

# 2

= общий = | 14.12.2006, 14:06 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

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


Посетитель

ID: 14422

# 3

= общий = | 14.12.2006, 14:10 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

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

 

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

Яндекс Rambler's Top100

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

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

© 2001-2018, Портал RFPRO.RU, Россия
Калашников О.А.  |  Гладенюк А.Г.
Версия системы: 7.47 от 16.04.2018