• Domingo 22 de Diciembre de 2024, 22:27

Autor Tema:  Manejo De Cadenas  (Leído 1297 veces)

gangister

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Manejo De Cadenas
« en: Viernes 26 de Agosto de 2005, 22:24 »
0
Hola:

Quiero hacer un programa que convierta numeros romanos a arabigos. Recien estoy aprendiendo pascal. Quisiera saber como puedo manejar el string leido de manera tal que pueda contar la cantidad de I,X,V,L,C,D,M para calcular el número.

Gracias

Alpha_

  • Miembro activo
  • **
  • Mensajes: 72
    • Ver Perfil
Re: Manejo De Cadenas
« Respuesta #1 en: Sábado 24 de Septiembre de 2005, 23:19 »
0
Básicamente la idea sería ir leyendo el string, e ir sumando los valores de las letras.

Ahora, tenemos el problema en cuanto una letra de valor menor a otra se encuentra a la izquierda de esta.

Lo que podrías hacer es llevar un caracter en el que indiques por qué letra vas (es decir, si la última que leíste es una M, D, C, L, X, V, I). La idea es que no leas una chica antes de una grande.

O puesto que las restas no se hacen con más de una letra, podrías recorrer de izquiera a derecha sumando, y verificando que no haya una dupla de resta.

Por ejemplo:

MXM

1era dupla: MX -> es letra grande-chica -> sumo M -> avanzo 1 lugar
2da dupla XM -> es letra chica-grande -> a la grande le resto la chica -> sumo -> avanzo 2 lugares

Entonces, en MDXLIV, tendríamos

1era -> MD -> mayor-menor -> sumo M al total (1000). Avanzo uno.
2da -> DX -> mayor-menor -> sumo D al total (1500). Avanzo uno.
3era -> XL -> menor-mayor -> L - X = 40, lo sumo al total (1540). Avanzo dos.
4ta -> IV -> menor-mayor -> V - I = 4, lo sumo al total (1544).

Terminó la cadena, total = 1544.

Espero haberme explayado bien. :S
Alpha
http]