Consulta sobre código de programa implementado en visual basic para convertir números decimales

Estoy desarrollando un programa muy sencillo, el cual convierte un numero decimal, a un numero de cualquier base del 2 al 9
para verificar, lo convierto a binario (base 2) pero falla con algunos valores como el 3, 11, entre muchos!
Acá les mando el código para que me informen en que le estoy errando! Gracias!
Dim numero As Integer
Dim base As Integer
Dim contador As Integer
Dim i As Integer
Dim valorrestos(1 To 100) As Integer
Dim resultado2 As Integer
Private Sub Command1_Click()
numero = Text1.Text
base = Text2.Text
resultado2 = Val(cambiarabase(numero, base))
Text3.Text = resultado2
End Sub
Function cambiarabase(numero As Integer, base As Integer) As String
Dim cociente As Integer
cociente = numero
contador = 1
Do While (cociente <> 0)
valorrestos(contador) = cociente Mod base
List1.AddItem valorrestos(contador)
cociente = cociente / base
contador = contador + 1
Loop
Dim resultado As String
resultado = ""
For i = 1 To (contador)
resultado = Str(valorrestos(i)) + resultado
Next i
cambiarabase = resultado
End Function
Gracias

1 Respuesta

Respuesta
1
Option Explicit
Dim numero As Integer
Dim base As Integer
Dim contador As Integer
Dim i As Integer
Dim valorrestos(1 To 100) As Integer
Dim resultado2 As Double ' Double tiene mas capacidad, si no me daba overflow algunas veces
Private Sub Command1_Click()
numero = Text1.Text
base = Text2.Text
resultado2 = Val(cambiarabase(numero, base))
Text3.Text = resultado2
End Sub
Function cambiarabase(numero As Integer, base As Integer) As String
Dim cociente As Integer
cociente = numero
contador = 1
Do While (cociente <> 0)
valorrestos(contador) = cociente Mod base
List1.AddItem valorrestos(contador)
cociente = cociente \ base ' \ hace divisiones enteras, vos usabas / que hace divisiones con coma, y como cociente en int redondea el resultado
contador = contador + 1
Loop
Dim resultado As String
resultado = ""
For i = 1 To (contador)
resultado = CStr(valorrestos(i)) + resultado ' CStr no añade espacios
Next i
cambiarabase = resultado
End Function
Los comentarios en código te explican lo que cambie

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas