Скрипт перевода в римские числа и обратно
Предлагаем Вашему вниманию JavaScript код, при помощи которого Вы сможете переводить арабские числа в римские и обратно. При помощи данного кода Вы легко можете удивить Ваших посетителей, отобразив какие-либо числа в виде римских цифр.
Для того чтобы убедиться в работоспособности скрипта воспользуйтесь формой перевода чисел расположенной ниже.
Обращаем Ваше внимание, что для вывода корректного результата работы скрипта рекомендуется вводить числа до 40 тысяч (т.к. ↂ = 10000). Если Вам требуется перевести большое число (например, 123456), то разбейте его по три знака (123 и 456) и переведите каждое число в отдельности. После перевода объедините получившиеся числа (CXXIII CDLVI) т.к. такой вариант написания длинных чисел тоже допускается.
Для получения у себя точно такой же формы перевода арабских чисел в римские и обратно, для начала добавьте на свой сайт следующую форму:
<div style="text-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="translater()"><br>
Результат: <b><span id="rez"></span></b><br>
Код: <input type="text" size="25" name="numerals">
</form>
</div>
Дальше необходимо добавить 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ↁ","ↁ","ↁↂ","ↂ"];
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 translater() {
obj = 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;
rez.innerHTML = itog;
}
</script>
Как Вы могли заметить, для обозначения римских цифр мы используем аналоги из английского алфавита. В коде также присутствуют коды Юникода ↁ и ↂ, которые соответствуют символам ↁ и ↂ соответственно. При этом ↁ = 5000, а ↂ = 10000.
Перед публикацией все комментарии проходят обязательную модерацию!
Если Вы хотите задать какой-либо вопрос, то сделайте это на нашем форуме.
Таким образом, Вы сможете быстрее получить ответ на интересующий Вас вопрос.
Если ввести "IIX" он выдаст 2, хотя такой цифры нет в римском.