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

Для того чтобы убедиться в работоспособности скрипта воспользуйтесь формой перевода чисел расположенной ниже.

Обращаем Ваше внимание, что для вывода корректного результата работы скрипта рекомендуется вводить числа до 40 тысяч (т.к. ? = 10000). Если Вам требуется перевести большое число (например, 123456), то разбейте его по три знака (123 и 456) и переведите каждое число в отдельности. После перевода объедините получившиеся числа (CXXIII CDLVI) т.к. такой вариант написания длинных чисел тоже допускается.

                        
HTML код:
<div align="center">
<form name="transfer_form">
Число: <input type="text" size="10" name="numeric"><br>
<input type="radio" name="direction" value="arab-roman" checked>В римские
<input type="radio" name="direction" value="roman-arab">В арабские<br>
<input type="button" value="Перевести" onclick="translate()"><br>
Результат: <b><span id="rez"></span></b><br>
Код: <input type="text" size="25" name="numerals">
</form>
</div>
Дальше необходимо добавить JavaScript код, который выполняет преобразование чисел в нужном направлении. Для этого скопируйте код, расположенный ниже себе на сайт:

JavaScript код:
<script type="text/javascript">
var font_ar = [1,4,5,9,10,40,50,90,100,400,500,900,1000,4000,5000,9000,10000];
var font_rom = ["I","IV","V","IX","X","XL","L","XC","C","CD","D","CM","M",
"M&#8577;","&#8577;","&#8577;&#8578;","&#8578;"];

function to_roman(text) {
if (!text) return '';
var rezult = '';
var n = font_ar.length - 1;
while (text > 0) {
if (text >= font_ar[n]) {
rezult += font_rom[n];
text -= font_ar[n];
}
else n--;
}
return rezult;
}

function to_arab(text) {
var text = text.toUpperCase();
var rezult = 0;
var posit = 0;
var n = font_ar.length - 1;
while (n >= 0 && posit < text.length) {
if (text.substr(posit, font_rom[n].length) == font_rom[n]) {
rezult += font_ar[n];
posit += font_rom[n].length;
}
else n--;
}
return rezult;
}

function translate() {
obj = window.document.transfer_form;
str = obj.numeric.value;
if (obj.direction[0].checked == true) { itog = to_roman(str); }
else { itog = to_arab(str); }

obj.numerals.value = itog;
xxx.innerHTML = itog;
}
</script>
0 12 0
Без комментариев...