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

// Переводит римские числа в арабские
var num = prompt("Введите римское число", "ammmCMXCIX"); // default - 3999
if(num) alert(RomanToArabic(num));
			
function RomanToArabic() {
	// объявляем переменные, инициализируем объект
	var i, alph = { I:1, V:5, X:10, L:50, C:100, D:500, M:1000 };
	// j - счетчик символов
	// h - результат предыдущих вычислений
	// n - возвращаемое число
	// По буквам строки/римского числа
	for(var h = 0, j = 0, n = 0; j < arguments[0].length; j++) {
		// используем объект как ассоциативный массив - по римской цифре определяем арабскую
		i = alph[arguments[0].charAt(j).toUpperCase()];
	/*	// строку ниже, в данном случае, можно записать так:
				if(i != undefined) {		// римская цифра?
					if(h < i) {				// предыдующая цифра < текущей, вычитаем
						h = i - h * 2;		// т.е. h = i - (h << 1)
					}
					else {					// предыдующая цифра >= текущей, получаем эту цифру			
						h = i;
					}
					n += h;					// собираем число
				}							*/
		if(i) n += h = (h < i ? i - (h << 1) : i);
	}
	// возвращаем число
	return n;
}
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Ответить с цитированием