• Lunes 23 de Diciembre de 2024, 16:47

Autor Tema:  convertir ROMANOS a Decimales(o arabigos)  (Leído 8486 veces)

betoskim

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
convertir ROMANOS a Decimales(o arabigos)
« en: Martes 7 de Abril de 2009, 21:17 »
0
bueno amigos tenia una consulta. he buscado por toda la red y aun no encuentro nada. alguien tendra el codigo para convertir de numeros Romanos a numeros decimales o arabigos en lenguaje Java.... he buscado pero solo hay codigos donde convierte las leras y las suma o las resta dependiendo del numero pero por ejemplo si pongo  VVV=15 cuando deberia ser XV. entonces por eso vengo a pedirles ayuda. muchas gracias

fuhrer

  • Miembro MUY activo
  • ***
  • Mensajes: 329
  • Nacionalidad: mx
    • Ver Perfil
    • http://admin.busquenoseninternet.com
Re: convertir ROMANOS a Decimales(o arabigos)
« Respuesta #1 en: Martes 7 de Abril de 2009, 21:36 »
0
Hola.

Lo que se tiene que hacer, es como dijiste, la conversión y suma de los valores, pero previo a esto, debes realizar una validación de tu cadena.

En este caso, es sencillo, ya que se sabe que a lo más se puede tener como máximo 3 letras iguales consecutivas y casos en los que no puedes tener letras iguales juntas, como la V, L, D.

De esta forma, vas formando tu conjunto de reglas, las cuales deben ser cumplidas por la cadena antes de aplicar lo que habias mencionado.

Existen otras formas, pero esta es la más sencilla.

Espero te sirva.

Hasta luego.

betoskim

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Re: convertir ROMANOS a Decimales(o arabigos)
« Respuesta #2 en: Martes 7 de Abril de 2009, 21:42 »
0
si se que no se pueden repetir, pero como hago esas validaciones??

betoskim

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Re: convertir ROMANOS a Decimales(o arabigos)
« Respuesta #3 en: Martes 7 de Abril de 2009, 21:49 »
0
Bueno he tenido en mente el tip k me dio pero junto con las validaciones k me menciono se encuentran otras problemas cm una V antes de una X aunque no este repetida.... etc...y asi para varios casos cm CLC o MDM etc... son formatos invalidos sin algun dato repetido... yo pensaba meterle que el k le procede tiene k ser mayor por ejemplo M>C y asi sucesivamente pero luego me presenta con MCM que es valido... por ejemplo que piensa me puede asistir???

silverfox

  • Miembro MUY activo
  • ***
  • Mensajes: 280
    • Ver Perfil
Re: convertir ROMANOS a Decimales(o arabigos)
« Respuesta #4 en: Miércoles 8 de Abril de 2009, 17:10 »
0
Hola.

Las conversiones de romanos a arábigos siguen algunas reglas que ya te han comentado:

1.- Nunca puede haber más de 3 letras iguales seguidas. VIII = 8

2.- Las letras siempre van de más grande a más pequeña. Si te encuentras una pequeña y siguiente una más grande, la pequeña resta a la grande: MCM = 1900

3.- Sólo puede haber una letra restando a otra más grande:  IIV = 3 MAL  --->  III = 3

4.- Hay que escribir el número con el menor número de letras posible: MDM = MAL  ---> MD = 1500 = BIEN

Dadas las reglas 3 y 4, hay que ver que entonces estará prohibido que la resta de dos letras devuelva un valor igual al de una letra, por ejemplo, está mal DM, porque M-D = 1000 - 500 = 500 = D, ya que el valor 500 se puede escribir con menos de dos letras (o sea, con una, la D).
En realidad, la regla que te he puesto como 1 también viene de aquí, ya que por ejemplo: VIIII = 9 = IX. Como puede escribirse con menos letras, el correcto es el segundo. De la misma forma, tal y como te comentó betoskim, VV = 10 = X => vale la segunda que tiene menos letras.


Con estas reglas el parser se hace algo más sencillo. La cuestión es si te van a dar siempre números correctos, aceptas también incorrectos sin dar error o tienes que validar el número además de dar el resultado.


Espero que esto te aclare algo. Ya nos contarás.


Suerte y un saludo.