Otra forma es almacenar en matriz bidimensional los números romanos para 1, 5, 10, 50, 100, 500, 1000 y así sucesivamente. Ejemplo (en PHP array):
$roman = array(
[0] = array(1=>"I", 5=>"V", 10=>"X"),
[1] = array(1=>"X", 5=>"L", 10=>"C"),
[2] = array(1=>"C", 5=>"D", 10=>"M"),
[3] = array(1=>"M", 5=>"^V", 10=>"^X"),
);
Luego tome cada dígito de derecha a izquierda y aplique la siguiente traducción. Establecimiento de un nivel variable $ = 0 y aumentar su valor en 1 después de cada dígito procesado: ('' en PHP un concats dos cadenas)
1 => $roman[$level][1]
2 => $roman[$level][1].$roman[$level][1]
3 => $roman[$level][1].$roman[$level][1].$roman[$level][1]
4 => $roman[$level][1].$roman[$level][5]
5 => $roman[$level][5]
6 => $roman[$level][5].$roman[$level][1]
7 => $roman[$level][5].$roman[$level][1].$roman[$level][1]
8 => $roman[$level][5].$roman[$level][1].$roman[$level][1].$roman[$level][1]
9 => $roman[$level][1].$roman[$level][10]
Ejemplo: 1945
5 => $roman[0][5] = "V"
4 => $roman[1][1].$roman[1][5] = "XL"
9 => $roman[2][1].$roman[2][10] = "CM"
1 => $roman[3][1] = "M"
Por lo tanto, el número traducido es "MCMXLV"
Lo siento, esto podría no responder completamente a su pregunta, pero espero que ayude de alguna manera ..
parece una pregunta de tarea, huele a pregunta de tarea ...;-) –
Sí, lo sé ... Desearía poder demostrar que no estoy haciendo trampa. EN REALIDAD, es una pregunta para los alumnos de CS ... Simplemente, no para mí, solo estoy leyendo el libro yo solo, y no tengo un maestro (o un amigo lo suficientemente informado) para preguntar. –