jueves, 8 de marzo de 2012

Como pasar de numeros romanos a arabes en Visual Basic 6

explicare brevemente lo que hace este codigo con esta foto:
lo que van a hacer es implementar 2 funciones, la primera convertira el numero a arabe:
Function ConvertirArabe(Romano As String) As Integer
    Dim Numero As Integer, Valor1 As Integer
    Dim Valor2 As Integer, Cadena As String
    If Len(Romano) = 0 Then ConvertirArabe = 0: Exit Function
    Cadena = Trim(Romano)
    Numero = 0
    Do
    Valor1 = VerValor(Left(Cadena, 1))
    Cadena = Right$(Cadena, Len(Cadena) - 1)
    Valor2 = VerValor(Left(Cadena, 1))
    If Valor1 >= Valor2 Then
    Numero = Numero + Valor1
    Else
    Numero = Numero - Valor1
    End If
    Loop Until Len(Cadena) = 0
    ConvertirArabe = Numero
End Function
aca como se puede ver utilizamos la funcion len y la funcion trim, la funcion len nos permite conocer la cantidad de caracteres que tiene una determinada cadena y la funcion trim borra espacios en blanco de toda la cadena. Tambien tenemos la funcion Left, Right$ y VerValor. La funcion Left(string, length) les explicare con este ejemplo XSaint= Left("naufrago", 3) ' XSaint = "nau". La funcion Right(string, length) hace esto: XSaint= Right$("naufrago", 3) ' XSaint = "ago". Como vemos la funcion Left devuelve una subcadena del lado izquierdo indicando el numero de caracteres. Lo mismo con Right( pero del lado derecho. Ahora la funcion VerValor no es una funcion propia del Visual Basic. Esta funcion la implementaremos aqui:
Function VerValor(Simbolo As String) As Integer
    Select Case Simbolo
    Case "I"
    VerValor = 1
    Case "V"
    VerValor = 5
    Case "X"
    VerValor = 10
    Case "L"
    VerValor = 50
    Case "C"
    VerValor = 100
    Case "D"
    VerValor = 500
    Case "M"
    VerValor = 1000
    Case "Q"
    VerValor = 5000
    Case "H"
    VerValor = 10000
    End Select
End Function
esta funcion devuelve el valor decimal por cada caracter que se extrae con las funciones Right y Left y luego compara sus valores. Y para terminar implementan este codigo en el procedimiento click del boton:
Private Sub Command1_Click()
Text2.Text = ConvertirArabe(Text1.Text)
End Sub
disculpen si no les puedo explicar todo el codigo, se que estoy saltandome algunas partes pero es que no tengo mucho tiempo como antes, pero espero igual les sirva para seguir aprendiendo y jugando con el codigo hasta luego :)

2 comentarios:

  1. gracias de verdad se lo agradesco graciaaaaaaaaaaaas

    ResponderEliminar
  2. A mí no me funciona a la hora de implementar el código en el procedimiento click del boton.
    Ayuda pro favor :(

    ResponderEliminar