Показать сообщение отдельно
  #15 (permalink)  
Старый 08.12.2011, 18:03
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

// Переводит арабские числа в римские 
var num = prompt("Введите число", 19); // default - 19
if(num) alert(ArabicToRoman(num));

function ArabicToRoman() {
	// массив соответствий римских и арабских чисел
	var alph = [["I",1], ["IV",4], ["V",5], ["IX",9], ["X",10], ["XL",40], ["L",50], ["XC",90], ["C",100], ["CD",400], ["D",500], ["CM",900], ["M",1000]];
	// j - счетчик эл. массива
	// i - число (арабское), кот. требуется перевести
	// n - возвращаемое римское число
	// По элементам массива -> от большего к меньшему
	for(var j = alph.length - 1, i = arguments[0], n = ""; j != -1; j--) {
	/*	строку ниже можно записать следующим образом
		if(~~(i / alph[j][1]) > 0) { 	// целочисленное деление и сравнение с 0
			n += alph[j][0];			// собираем римское число
			i -= alph[j][1];			// корректируем арабское число на то, кот. определили
			j++;						// проверяем пару (эл. массива) еще раз
		}							*/					
		if(~~(i / alph[j][1]) > 0) { n += alph[j][0]; i -= alph[j][1]; j++; }
	}
	// возвращаем римское число
	return n;
}
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Ответить с цитированием