Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

BCunha

Transformar números reais em romanos com JavaScript

Recommended Posts

Fiz um código para converter números reais em números romanos, e ele está executando. Porém não está correto, pois ele só converte o número mais a direita e que não for 0.

 

Não sei porque não está concatenando os resultados anteriores, como por exemplo: se digito 1281 ele vai me mostra: "I", já se digito 1000 ele me mostra "M" ou então 300 ele mostra CCC. O que pode estar acontecendo? Segue código abaixo:

 

<script type="text/javascript">

 

 

var nro = parseInt (prompt ("informe o número para ser convertido", "Digite aqui!"));

var res = ""

 

 

 

 

 

if((nro / 100) / 10 == 1){

res += 'M';

} else if ((nro / 100) / 10 == 2){

res += 'MM';

} else if ((nro / 100) / 10 == 3){

res += 'MMM';

} else if ((nro / 100) / 10 == 4){

res += 'MMMM';

} else if ((nro / 100) / 10 == 5){

res += 'MMMMM';

} else if ((nro / 100) / 10 == 6){

res += 'MMMMMM';

} else if ((nro / 100) / 10 == 7){

res += 'MMMMMMM';

} else if ((nro / 100) / 10 == 8){

res += 'MMMMMMMM';

} else if ((nro / 100) / 10 == 9){

res += 'MMMMMMMMM';

} else{}

 

 

if ((nro / 100) % 10 == 1 || nro / 100 == 1){

res += 'C';

} else if ((nro / 100) % 10 == 2 || nro / 100 == 2){

res += 'CC';

} else if ((nro / 100) % 10 == 3 || nro / 100 == 3){

res += 'CCC';

} else if ((nro / 100) % 10 == 4 || nro / 100 == 4){

res += 'CD';

} else if ((nro / 100) % 10 == 5 || nro / 100 == 5){

res += 'D';

} else if ((nro / 100) % 10 == 6 || nro / 100 == 6){

res += 'DC';

} else if ((nro / 100) % 10 == 7 || nro / 100 == 7){

res += 'DCC';

} else if ((nro / 100) % 10 == 8 || nro / 100 == 8){

res += 'DCCC';

} else if ((nro / 100) % 10 == 9 || nro / 100 == 9){

res += 'CM';

} else {}

 

 

if ((nro / 10) % 10 == 1 || nro / 10 == 1){

res += 'X';

} else if ((nro / 10) % 10 == 2 || nro / 10 == 2){

res += 'XX';

} else if ((nro / 10) % 10 == 3 || nro / 10 == 3){

res += 'XXX';

} else if ((nro / 10) % 10 == 4 || nro / 10 == 4){

res += 'XL';

} else if ((nro / 10) % 10 == 5 || nro / 10 == 5){

res += 'L';

} else if ((nro / 10) % 10 == 6 || nro / 10 == 6){

res += 'LX';

} else if ((nro / 10) % 10 == 7 || nro / 10 == 7){

res += 'LXX';

} else if ((nro / 10) % 10 == 8 || nro / 10 == 8){

res += 'LXXX';

} else if ((nro / 10) % 10 == 9 || nro / 10 == 9){

res += 'XC';

} else{}

 

 

 

 

if (nro % 10 == 1 || nro / 1 == 1){

res += 'I';

} else if (nro % 10 == 2 || nro / 1 == 2){

res += 'II';

} else if (nro % 10 == 3 || nro / 1 == 3){

res += 'III';

} else if (nro % 10 == 4 || nro / 1 == 4){

res += 'IV';

} else if (nro % 10 == 5 || nro / 1 == 5){

res += 'V';

} else if (nro % 10 == 6 || nro / 1 == 6){

res += 'VI';

} else if (nro % 10 == 7 || nro / 1 == 7){

res += 'VII';

} else if (nro % 10 == 8 || nro / 1 == 8){

res += 'VIII';

} else if (nro % 10 == 9 || nro / 1 == 9){

res += 'IX';

} else{}

 

 

document.write (res);

 

 

 

</script>

Compartilhar este post


Link para o post
Compartilhar em outros sites

ficaria assim

mil = Math.round(rro / 1000)

for (i=1;i<=mil;i++)

{

res += "M"

}

nro = nro - mill * 1000;

centena = Math.round(nro / 100)

if(centena => 1)

if(centena ==5){

res += "D";

}else if(centena == 6){

res+= "DC";

}

else if(centena == 4){

res+= "CD";

}

e vai indo

}

Isso facilitaria.

Não esquece das regras que x , c não pode repetir mais de tres vezes

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.