Второй день программы
Сегодня построением конвертера, который переводит арабские цифры в римские.
Roman Numeral Converter
Для начала нам нужно понять, что многие римские цифры получаются путем сложения. Например римская цифра VIII - получается из V + III. (5+3), а III = I + I + I
Следовательно, нам нужно выделить только особо идентичные цифры (которые не получаются путем сложения
Эти римские символы мы представили в массиве var romSim
Их арабские аналоги мы представили с той же последовательности в массиве арабских чисел - var arNum
Для полученных путем сложения, и не только, римских символов, мы создали пустой массив - var myRomSim = [];
Теперь мы создаем цикл for для перебора всех римских символов в массиве.
Внутри него мы создаем цикл while, для сравнения заданного числа num с нашим созданным массивом арабских чисел var arNum
Теперь цикл будет находить точно такое же число (или меньшее) в массиве арабских чисел и добавлять аналог этого числа [i] из массива римских символовvar romSim в наш пустой массив var myRomSim = [];
При выполнении этого число num будет уменьшаться на найденное арабское num -= arNum[i];
Цикл будет повторяться столько раз, пока весь остаток не будет добавлен к римскому символу.
Например: Зададим число 8. Первое, что надет цикл - V, но останется 3. Поэтому цикл запустится еще раз и добавит только I, останется 2. Еще два раза и получим -VIII
function convertToRoman(num) {
var myRomSim = [];
var romSim = ['M','CM','D','CD','C','XC','L','XL','X','IX','V','IV','I'];
var arNum = [1000,900,500,400,100,90,50,40,10,9,5,4,1];
for(i = 0; i < romSim.length; i++){
while(num >= arNum[i]){
myRomSim +=romSim[i];
num -= arNum[i];
}
}
return myRomSim;
}
convertToRoman(36);
Комментариев нет:
Отправить комментарий