Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Пт мар 29, 2024 00:36

...
Google Search
Forth-FAQ Spy Grafic

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 10 ] 
Автор Сообщение
 Заголовок сообщения: o! задачка! преобразование числа в римскую цифру.
СообщениеДобавлено: Вт мар 16, 2010 21:55 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 13:19
Сообщения: 3565
Откуда: St.Petersburg
Благодарил (а): 4 раз.
Поблагодарили: 72 раз.
Написать слово, которое из числа на стеке печатает его "римской цифрой".
Ограничение - число не более 65536 (16 разрядов).
Где искать правила преобразования - сам не знаю.

_________________
С уважением, WingLion
Forth-CPU . RuF09WE
Мой Форт
Отсутствие бана это не заслуга юзера, а недоработка модератора (с)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вт мар 16, 2010 22:05 
Не в сети
Аватара пользователя

Зарегистрирован: Чт июл 20, 2006 11:31
Сообщения: 2168
Откуда: Екб
Благодарил (а): 0 раз.
Поблагодарили: 41 раз.
WingLion писал(а):
Ограничение - число не более 65536 (16 разрядов).
Где искать правила преобразования - сам не знаю.

I - 1
V - 5
X - 10
L - 50
C - 100
D - 500
M = 1000

Сначала пишутся тысячи и сотни, а затем - десятки и единицы. Есть и некоторые правила.Если большая цифра стоит перед меньшей, то они складываются (принцип сложения), если же меньшая - перед большей, то меньшая вычитается из большей (принцип вычитания).

Одна черта сверху означает умножение всего числа на 1000. Но в типографи черта сверху применяется редко из-за сложности набора.

Примеры

Число 26 = XXVI
Число 1987 = MCMLXXXVII

Чтобы лучше запомнить буквы в римских цифрах в русском языке существует правило мнемоники, которое звучит так:
Мы Дарим Сочные Лимоны, Хватит Всем Их.

_________________
С уважением, chess


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вт мар 16, 2010 22:14 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 13:19
Сообщения: 3565
Откуда: St.Petersburg
Благодарил (а): 4 раз.
Поблагодарили: 72 раз.
интел всех переплюнула, пентиум 2010 года сделала в середине 90-х годов и назвала без ложной скромности Pentium-MMX

_________________
С уважением, WingLion
Forth-CPU . RuF09WE
Мой Форт
Отсутствие бана это не заслуга юзера, а недоработка модератора (с)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вт мар 16, 2010 22:52 
Не в сети

Зарегистрирован: Сб май 13, 2006 23:37
Сообщения: 380
Благодарил (а): 1 раз.
Поблагодарили: 10 раз.
жалко, что в интернете ответ отыскивается за пару кликов.


Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Ср мар 17, 2010 01:42 
Не в сети

Зарегистрирован: Сб май 06, 2006 12:01
Сообщения: 959
Откуда: Украина, Харьков
Благодарил (а): 2 раз.
Поблагодарили: 7 раз.
доп. информация: Броуди, Способ мышления - Форт, глава 4.
Заодно и поучиться можно... ;)

_________________
With best wishes, in4.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Ср мар 17, 2010 07:20 
Не в сети

Зарегистрирован: Сб янв 26, 2008 18:23
Сообщения: 71
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
: 1 ." I" ;
: 2 ." II" ;
: 3 ." III" ;
: 4 ." IV" ;
: 5 ." V" ;
...
..
...
: 65536 ."..........

надо беречь ресурсы мозга за счёт коипьютерных "мозгов".


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Ср мар 17, 2010 07:59 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 13:19
Сообщения: 3565
Откуда: St.Petersburg
Благодарил (а): 4 раз.
Поблагодарили: 72 раз.
a с неоднозначностью что делать?
90=XC или 90=LXL ?

49=IL или 49=XLIX ?

и т.д. и т.п.

_________________
С уважением, WingLion
Forth-CPU . RuF09WE
Мой Форт
Отсутствие бана это не заслуга юзера, а недоработка модератора (с)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Ср мар 17, 2010 08:44 
Не в сети
Аватара пользователя

Зарегистрирован: Чт июл 20, 2006 11:31
Сообщения: 2168
Откуда: Екб
Благодарил (а): 0 раз.
Поблагодарили: 41 раз.
WingLion писал(а):
a с неоднозначностью что делать?
90=XC или 90=LXL ?

49=IL или 49=XLIX ?

и т.д. и т.п.

Выбирайте более короткий вариант.

_________________
С уважением, chess


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Ср мар 17, 2010 10:34 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5062
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 63 раз.
провакационное решение (детям не показывать!)
<pre>
\ получаем количество циферек (вот до чего доводит нежелание создавать нормальную позиционную систему!)
: ?# ( u n char --> u )
>L BEGIN DDUP 1 - > WHILE
TUCK - SWAP
L@ KEEP
REPEAT L> DDROP ;

\ ленивый вариант!!!
: >rome ( u --> )
<| 1000 [CHAR] M ?#
500 [CHAR] D ?#
100 [CHAR] C ?#
50 [CHAR] L ?#
10 [CHAR] X ?#
5 [CHAR] V ?#
1 [CHAR] I ?#
DROP |> TYPE ;
</pre>

вообще, интересно, что Римляне догадались систему сделать позиционной (мое решение нет), только подошли к решению своеобразно.
Но тут у меня есть подозрение, что так они боролись с "пузырями", то есть с банкирами. Попробуй написать милиард в римской системе!.. Вот пользовалсь бы США римской системой - не пришлось бы выдумывать "зеленые ростки" ;)

_________________
Мне бы только мой крошечный вклад внести,
За короткую жизнь сплести
Хотя бы ниточку шёлка.
fleur


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Ср мар 17, 2010 14:46 
Не в сети
Аватара пользователя

Зарегистрирован: Чт июл 20, 2006 11:31
Сообщения: 2168
Откуда: Екб
Благодарил (а): 0 раз.
Поблагодарили: 41 раз.
Печатает "правильные" римские числа, но так как символа подчеркивания сверху я сделать не могу, то
начиная с числа 4000 "правильности" не достичь.

Код:
0 VALUE SMD

: SYM. \ SM --
  S" IVXLCDM" DROP SMD + + C@ EMIT ;

: DIG.  \ DIG SM --
  TO SMD 5 /MOD OVER 4 =
  IF 0 SYM. IF 2 SYM. ELSE 1 SYM.  THEN DROP
  ELSE  IF 1 SYM. THEN 0 ?DO 0 SYM. LOOP THEN ;

: ROME. \ N --
  1000 /MOD 6 DIG. 100 /MOD 4 DIG. 10 /MOD 2 DIG. 0 DIG. ;

3949 ROME.

log
Код:
MMMCMXLIX
Ok

_________________
С уважением, chess


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 10 ] 

Часовой пояс: UTC + 3 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 21


Вы не можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
phpBB сборка от FladeX // Русская поддержка phpBB