Niklaus Wirth

Niklaus Wirth

Translate

Конвертер арабских цифр в римские

Второй день программы

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


Комментариев нет:

Отправить комментарий