Tell us what’s happening:
the following code works for all numbers except for a number containing 41 to 49. It works for 40.
I have attached the test case result. The test result says ’ Invalid count value’
Your code so far
function convertToRoman(num) {
let roman = '';
//thousands place
if(num / 1000 > 0) {
let m = Math.floor(num/1000);
roman = roman + 'M'.repeat(m);
num = num % 1000;
}
//hundreds place
if (Math.floor(num / 100) === 9) {
roman = roman + 'CM';
num = num % 100;
} else if (num / 100 > 4) {
let c = Math.floor(num/100) - 5;
roman = roman + 'D' + 'C'.repeat(c);
num = num % 100;
} else if (Math.floor(num / 100) === 4) {
roman = roman + 'CD';
num = num % 100;
} else if (num / 100 > 0) {
let c = Math.floor(num/100);
roman = roman + 'C'.repeat(c);
num = num % 100;
}
if (Math.floor(num / 10) === 9) {
roman = roman + 'XC';
num = num % 10;
} else if (num / 10 > 4) {
let c = Math.floor(num/10) - 5;
roman = roman + 'L' + 'X'.repeat(c);
num = num % 10;
} else if (Math.floor(num / 10) === 4) {
roman = roman + 'XL';
num = num % 10;
} else if (num / 10 > 0) {
let c = Math.floor(num/10);
roman = roman + 'X'.repeat(c);
num = num % 10;
}
if (Math.floor(num % 10) === 9) {
roman = roman + 'IX';
return roman;
} else if (num % 10 > 4) {
let i = Math.floor(num%10) - 5;
roman = roman + 'V' + 'I'.repeat(i);
return roman;
} else if (Math.floor(num % 10) === 4) {
roman = roman + 'IV';
return roman;
} else if (num % 10 > 0) {
let i = Math.floor(num%10);
roman = roman + 'I'.repeat(i);
}
return roman;
}
convertToRoman(36);
 
Your browser information:
User Agent is: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36
.
Link to the challenge: