В чем ошибка (перевод в римское счисление)?

250
23 июня 2017, 10:29

Как считаете, почему я получаю значение "undefined", а не римское число? Может, грубая ошибка?

var letters = ["M", "D", "C", "L", "X", "V", "I"]; 
var nletters = [1000, 500, 100, 50, 10, 5, 1]; 
var datain = prompt("Введите число, не превышающее 3999: "); 
var out = ""; 
for (var a = 0; a < letters.length; a++ ) { 
var calc = Math.trunc(datain/=nletters[a]); //Функция для "отсечения" дробной части 
   for (var b = calc; b > 0; --b) { //Прибавляем буквы 
      out+=letters[a]; 
   } 
   if (calc == 0 || calc > 3) { //Вычитаем то, что уже должно быть записано 
      datain-=calc*nletters[a]; 
   } 
} 
alert(out);

Answer 1

описание :

во первых

Math.trunc(datain/=nletters[a]);

Тут явно лишнее равно, оно записывало в datain результат деления из за этого начальные данные терялись

if (calc == 0 || calc > 3) { //Вычитаем то, что уже должно быть записано
   datain-=calc*nletters[a];
}

тут условие не нужно, отнимаем всегда, потому, что, если текущее число в datain встречается то надо отнимать, если нет, то отнимем 0

как-то так :

var letters = ["M", "D", "C", "L", "X", "V", "I"]; 
var nletters = [1000, 500, 100, 50, 10, 5, 1]; 
var datain = prompt("Введите число, не превышающее 3999: "); 
console.log(datain); 
var out = ""; 
for (var a = 0; a < letters.length; a++) { 
  var calc = Math.trunc(datain / nletters[a]); 
  for (var b = calc; b > 0; --b) { 
    out += letters[a]; 
  } 
  datain -= calc * nletters[a]; 
} 
console.log(out);

READ ALSO
Сесии и авторизация node js

Сесии и авторизация node js

Есть ли возможность сделать авторизацию и сессии на чистом node js без использования express?

487
отправка картинки на сервер не из input[type=&#39;file&#39;]

отправка картинки на сервер не из input[type='file']

Здравствуйте!) Нужна подсказка, как мне отправить картинку из на сервер? Задача такова, я делаю скрин некой области монитора скриптом, формируется...

244
Анимация при нажатии css

Анимация при нажатии css

Хочу попробовать повторить анимационный эффект который, пример его по ссылке пример, при переходе с вкладки на вкладку "О репетиторе" и "отзывы"...

396