Convertir numero entero a Romano
Publicado por Melissa (1 intervención) el 02/03/2002 02:11:10
Necesito urgente, codigo de algoritmo de conversión de un numero decimal a romano.!, En JAVA
Gracias
Melissa
Gracias
Melissa
Valora esta pregunta


1
int N;
do {
N=Integer.parseInt(txtIngresaNumero.getText());
} while (N < 1 || N > 3999);
txtRespuesta.setText( " " + convertirANumerosRomanos(N));
}
//método para pasar a números romanos
public static String convertirANumerosRomanos(int numero) {
int i, miles, centenas, decenas, unidades;
String romano = "";
//obtenemos cada cifra del número
miles = numero / 1000;
centenas = numero / 100 % 10;
decenas = numero / 10 % 10;
unidades = numero % 10;
//millar
for (i = 1; i <= miles; i++) {
romano = romano + "M";
}
//centenas
if (centenas == 9) {
romano = romano + "CM";
} else if (centenas >= 5) {
romano = romano + "D";
for (i = 6; i <= centenas; i++) {
romano = romano + "C";
}
} else if (centenas == 4) {
romano = romano + "CD";
} else {
for (i = 1; i <= centenas; i++) {
romano = romano + "C";
}
}
//decenas
if (decenas == 9) {
romano = romano + "XC";
} else if (decenas >= 5) {
romano = romano + "L";
for (i = 6; i <= decenas; i++) {
romano = romano + "X";
}
} else if (decenas == 4) {
romano = romano + "XL";
} else {
for (i = 1; i <= decenas; i++) {
romano = romano + "X";
}
}
//unidades
if (unidades == 9) {
romano = romano + "IX";
} else if (unidades >= 5) {
romano = romano + "V";
for (i = 6; i <= unidades; i++) {
romano = romano + "I";
}
} else if (unidades == 4) {
romano = romano + "IV";
} else {
for (i = 1; i <= unidades; i++) {
romano = romano + "I";
}
}
return romano;
}
public String solution(int number) {
String romanNumbers[] = {"M", "CMXC", "CM", "D", "CDXC", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I"};
int arab[] = {1000, 990, 900, 500, 490, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1};
StringBuilder result = new StringBuilder();
int i = 0;
while (number > 0 || arab.length == (i - 1)) {
while ((number - arab[i]) >= 0) {
number -= arab[i];
result.append(romanNumbers[i]);
}
i++;
}
return result.toString();
}