МВИА 10 Опубликовано: 25 января 2008 Рассказать Опубликовано: 25 января 2008 Прошёлся по поиску, многое нашёл но не это. Мне нужно изменить арабские (1,2,3,4..) цифры номеров страниц на римские (I,II,III,IV...). Может кто знает как? Заранее спасибо. Цитата Ссылка на сообщение Поделиться на других сайтах
Pimen 0 Опубликовано: 25 января 2008 Рассказать Опубликовано: 25 января 2008 Простенький скрипт поможет Цитата Ссылка на сообщение Поделиться на других сайтах
flo.mAster 7 Опубликовано: 25 января 2008 Рассказать Опубликовано: 25 января 2008 (изменено) Ну а если у вас будет страница 105, как она римскими будет написана? Изменено 25 января 2008 пользователем flo.mAster Цитата Ссылка на сообщение Поделиться на других сайтах
Pimen 0 Опубликовано: 25 января 2008 Рассказать Опубликовано: 25 января 2008 Нужно определять число сотен десятков и единиц и от этого выводить номер flo.mAster, она будет написана "CV". Цитата Ссылка на сообщение Поделиться на других сайтах
МВИА 10 Опубликовано: 25 января 2008 Рассказать Опубликовано: 25 января 2008 (изменено) Автор Ну а если у вас будет страница 105, как она римскими будет написана? Римские цифры обозначаются по первым буквам слов (как и у славянских цифр). Cent (100) 105=CV. Ведь в языке програмирования html при сортировке можно указать вывод римскими цифрами. Изменено 25 января 2008 пользователем МВИА Цитата Ссылка на сообщение Поделиться на других сайтах
romen 1 Опубликовано: 28 января 2008 Рассказать Опубликовано: 28 января 2008 просто берешь один из алгоритмов преобразования арабских в римские и используешь его при выводи нафигатора. все просто. алгоритм найти - в гугль. если хочется реальной помощи - смотри мой профиль, обращайся -покумекаем. Цитата Ссылка на сообщение Поделиться на других сайтах
МВИА 10 Опубликовано: 1 февраля 2008 Рассказать Опубликовано: 1 февраля 2008 Автор Система римских цифр основана на обозначении особыми знаками десятичных разрядов и их половин: I(1), Х(10), C(100), M(1000), V(5), L(50), D(500). При обозначении чисел этими цифрами место последних не имеет того значения, что в системе арабских цифр. Значения стоящих рядом цифр складываются, напр. II означает 1+1, т.е. 2, СС означает 100 + 100, т.e. 200, CXII означает 100+10+1+1, т.е. 112. Однако если цифра меньшего значения стоит левее цифры большего значения, то меньшая цифра вычитается из большей, например IV означает 5—1. Таким образом оказывается возможным различное обозначение одного и того же числа. Например, число 80 можно обозначить как LXXX (50+10+10+10) и как ХХС (100 - 20). Число 9, которое по принципу сложения должно писаться VIIII, по принципу вычитания, позволяющему избежать четырехкратного повторения одной и той же цифры, будет писаться IX. По этому же принципу в настоящее время пишутся все ближайшие к десяткам и их половинам числа — 4, 14, 19 и т. д. Знаки L, С и М восходят к буквам послужившего основой для латинского алфавита западногреческого алфавита. Эти буквы, обозначавшие в западногреческом алфавите придыхательные звуки (kh, th, ph), отсутствовавшие в латинском языке, стали в нем употребляться для обозначения чисел и впоследствии их написание было приспособлено к написанию латинских букв. С (100) стало отождествляться с первой буквой латинского слова centum (сто), М (1000), являющееся видоизмененной формой греческого Ф,— с первой буквой латинского слова mille (тысяча). Знак D (500), отождествленный с латинской буквой, представляет собой половину знака Ф (1000), так же, как V (5) является верхней половиной знака Х (10). Год — 1999 — римскими цифрами следует писать: MCMXCIX. Нашёл такой код (_http://www.codingclub.net/forum/index.php?showtopic=485), но как его вставить и модифицировать под поставленную задачу не знаю. Помогите знающие люди: void __fastcall TForm1::Button1Click(TObject *Sender) { AnsiString rim = ""; // сюда мы позже занесём приславутое число if(Edit1->Text == "") // проверка чтобы было число { Edit2->Text = "No number :( try agane"; return; } AnsiString chisla[2]; // Массив. Добавишь сюда другие обозначения chisla[0] = ""; chisla[1] = "V"; chisla[2] = "X"; try // разберёшься зачем это тут :) ? { int chis = atoi(Edit1->Text.c_str()); // это число добываем } catch(...) { Edit2->Text = "It must to be any number!"; return; } int pyat = chis / 5; int ostp = chis % 5; if(pyat > 2) { Edit2->Text = "error"; return; } switch(ostp) { case 0: rim = chisla[pyat]; break; case 1: rim = chisla[pyat] + "I"; break; case 2: rim = chisla[pyat] + "II"; break; case 3: rim = chisla[pyat] + "III"; break; case 4: rim = "I" + chisla[pyat+1]; break; } Edit2->Text = rim; } Цитата Ссылка на сообщение Поделиться на других сайтах
romen 1 Опубликовано: 4 февраля 2008 Рассказать Опубликовано: 4 февраля 2008 Вот: function IntToRoman($num) { $vals= array(1, 4, 5, 9, 10, 40, 50, 90, 100, 400, 500, 900, 1000); $roms= array('I', 'IV', 'V', 'IX', 'X', 'XL', 'L', 'XC', 'C', 'CD', 'D', 'CM', 'M'); $result = ''; $b = 12; while ($num > 0) { while ($vals[$b] > $num) $b--; $num = $num-$vals[$b]; $result .= $roms[$b]; } return $result; } echo IntToRoman(1999); Цитата Ссылка на сообщение Поделиться на других сайтах
Рекомендованные сообщения
Присоединяйтесь к обсуждению
Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.