Второй день программы
Сегодня построением конвертера, который переводит арабские цифры в римские.
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);
Комментариев нет:
Отправить комментарий