me deparei com o seguinte problema :
Implementar um programa em java que leia um String (utilizar o método next da classe Scanner) que contenha um número romano válido e retorne valor decimal correspondente:
public static int converteParaRomanoParaDecimal(String numeroRomano)
alguem sabe como resolver???
abraço!
Comece estudando como fuciona o sistema de numeração romano:
O sistema de numeração romana (algarismos romanos ou números romanos) desenvolveu-se na Roma Antiga, e foi utilizado em todo o Império Romano. É composto por sete letras maiúsculas do alfabeto latino: I, V, X, L, C, D e M.
Alguns valores inteiros são representados por letras romanas específicas. São eles:
Para representar outros números, são escritos alguns algarismos, começando do algarismo de maior valor e seguindo a seguinte regra:
Assim, XI representa 10 + 1 = 11, enquanto XC representa 10...
Em seguida, veja o funcionamento do método charAt, da classe String:
String x = "Vinícius";
System.out.println(x.charAt(0)); //Imprime 'V'
System.out.println(x.charAt(1)); //Imprime 'i'
System.out.println(x.charAt(2)); //Imprime 'n'
Finalmente, elabore o que conseguir do seu código e poste aqui as dúvidas referentes a ele.
Farei isto!
estava meio ruim de começar!!
WRYEL
Outubro 2, 2011, 1:39pm
#4
/**
* Author: Francisco Edmundo
*
**/
private int traduzirNumeralRomano(String texto) {
int n = 0;
int numeralDaDireita = 0;
for (int i = texto.length() - 1; i >= 0; i--) {
int valor = (int) traduzirNumeralRomano(texto.charAt(i));
n += valor * Math.signum(valor + 0.5 - numeralDaDireita);
numeralDaDireita = valor;
}
return n;
}
private double traduzirNumeralRomano(char caractere) {
return Math.floor(Math.pow(10, "IXCM".indexOf(caractere))) + 5 * Math.floor(Math.pow(10, "VLD".indexOf(caractere)));
}
4 anos depois, alguém postou a resposta! heheheheh
Não cheguei a conferir. Está certo ou você tem alguma dúvida?
Está certo sim. Esse é um dos métodos mais eficientes e resumidos para a resolução desse problema.
Foi desenvolvido pelo Ilustríssimo professor Francisco Edmundo.
[quote=schonrockas]Está certo sim. Esse é um dos métodos mais eficientes e resumidos para a resolução desse problema.
Foi desenvolvido pelo Ilustríssimo professor Francisco Edmundo.[/quote]
Testei aqui, funcionou perfeitamente. É realmente uma solução muito inteligente.
Adicionei aos meus favoritos.
Quase 10 anos se passaram! Mas o assunto ainda Vibra forte. Obrigado @ViniGodoy e professor @schonrockas Professor Francisco Edmundo.
1 curtida