Haciendo un conversor de números arábigos a romanos me encontré una duda existencial.
En visual basic lo hice con dos listas. Una para los valores equivalentes y otra para los números romanos.
Por ejemplo para los números romanos.
Dim romanos() as variant
romanos=array("M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I")
No sé si el termino array es igual en gambas.Lo cierto es que en gambas lo hice asi:
DIM romanos AS String[] = ["M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I"]
Una matriz nativa.
En visual basic hubiera tenido que ser variant.
Y ya de paso os pongo el programa en gambas.
PUBLIC SUB Form_Open()
TxtArabigo.SetFocus
END
PUBLIC SUB Button1_Click()
DIM numero AS Integer
DIM equiv AS Integer[] = [1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1]
DIM romanos AS String[] = ["M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I"]
DIM x AS Integer
numero = TxtArabigo.Text
x = 0
TxtRomano.Text = ""
WHILE x <= 12
IF numero >= equiv[x] THEN
numero = numero - equiv[x]
TxtRomano.Text = TxtRomano.Text & (romanos[x])
ELSE
x = x + 1
END IF
WEND
END
TxtArabigo.SetFocus
END
PUBLIC SUB Button1_Click()
DIM numero AS Integer
DIM equiv AS Integer[] = [1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1]
DIM romanos AS String[] = ["M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I"]
DIM x AS Integer
numero = TxtArabigo.Text
x = 0
TxtRomano.Text = ""
WHILE x <= 12
IF numero >= equiv[x] THEN
numero = numero - equiv[x]
TxtRomano.Text = TxtRomano.Text & (romanos[x])
ELSE
x = x + 1
END IF
WEND
END
Conclusion: Dios, hay que darselo to mascado al pc.