elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Únete al Grupo Steam elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  Problema con mi código de calculadora
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problema con mi código de calculadora  (Leído 1,863 veces)
Chack22

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Problema con mi código de calculadora
« en: 24 Mayo 2013, 04:38 am »

Hola a todos, se que hay varios posts con códigos de calculadoras pero yo intenté hacerla a mi manera y no sólo copiar las que ya están, y sólo pido algún consejo o que me digan que es lo que le falta o en que está mal, la calculadora la intente hacer en VB 6 con las 4 operaciones básicas (+,-,/,*). Pero a la hora de dar click en el botón de igual (=) no me devuelve el resultado de la operación. Aquí mi código.

Código:
Private Sub Form_Load()
Dim x As String
Dim xlong As Long
End Sub
----------------------------------------
Private Sub cmd0_Click(Index As Integer)
 display.Text = display.Text & "0"
End Sub
----------------------------------------
Private Sub cmd1_Click(Index As Integer)
 display.Text = display.Text & "1"
End Sub
----------------------------------------
Private Sub cmd2_Click(Index As Integer)
 display.Text = display.Text & "2"
End Sub
----------------------------------------
Private Sub cmd3_Click(Index As Integer)
 display.Text = display.Text & "3"
End Sub
----------------------------------------
Private Sub cmd4_Click(Index As Integer)
 display.Text = display.Text & "4"
End Sub
----------------------------------------
Private Sub cmd5_Click(Index As Integer)
 display.Text = display.Text & "5"
End Sub
----------------------------------------
Private Sub cmd6_Click(Index As Integer)
 display.Text = display.Text & "6"
End Sub
----------------------------------------
Private Sub cmd7_Click(Index As Integer)
 display.Text = display.Text & "7"
End Sub
----------------------------------------
Private Sub cmd8_Click(Index As Integer)
 display.Text = display.Text & "8"
End Sub
----------------------------------------
Private Sub cmd9_Click(Index As Integer)
 display.Text = display.Text & "9"
End Sub
----------------------------------------
Private Sub cmdentre_Click(Index As Integer)
x = "/"
 xlong = "display.txt"
 display.Text = ""
End Sub
----------------------------------------
Private Sub cmdmas_Click(Index As Integer)
 x = "+"
 xlong = "display.txt"
 display.Text = ""
End Sub
----------------------------------------
Private Sub cmdmenos_Click(Index As Integer)
x = "-"
 xlong = "display.txt"
 display.Text = ""
End Sub
----------------------------------------
Private Sub cmdpor_Click(Index As Integer)
x = "*"
 xlong = "display.txt"
 display.Text = ""
End Sub
----------------------------------------
Private Sub cmdigual_Click()
 If x = "+" Then
  x = xlong + display.Text
  display.Text = "x"
 End If
 If x = "-" Then
  x = xlong - display.Text
  display.Text = "x"
 End If
 If x = "*" Then
  x = xlong * display.Text
  display.Text = "x"
 End If
 If x = "/" Then
  x = xlong / display.Text
  display.Text = "x"
 End If
End Sub


En línea

XresH


Desconectado Desconectado

Mensajes: 384



Ver Perfil WWW
Re: Problema con mi código de calculadora
« Respuesta #1 en: 24 Mayo 2013, 04:45 am »

Bueno hola, primero que nada quiero decirte que tenes mal declaradas las variables en Form Load, ya que si las dejas ahi solo son válidas dentro de ese evento.

Debes declararlas en la parte superior luego de Option Explicit (instruccion que te recomiendo que tengas siempre activa, ya que obliga a la declaración de variables)

Tienes muchos botones con Matriz de controles, habría que pulir un poco el código en ese sentido para tenerlo mas claro ya que hay código innecesario que perfectamente podés saltear sin que desacomode tu aplicación.

Podrías agregar una función que compruebe el divisor y si es igual a 0 salirte o desplegar un mensaje que es imposible dividr por cero.

Por el momento podés ir acomodando eso.


Saludos.



EDITO: a ver que te parece esto, todo a base de matrices las cuales tienes creadas (al parecer) pero no las tienes aplicadas, observa;


Código:
Option Explicit
Dim Operacion As String
Dim xlong As Long
Dim Resultado As Long


encima del todo en el IDE.

Luego, en el botón de Igual;


Código:
'----------------------------------------
Private Sub cmdigual_Click()
If Operacion = "+" Then
   Resultado = xlong + Val(display.Text)
   display.Text = Resultado
End If
If Operacion = "-" Then
   Resultado = xlong - Val(display.Text)
   display.Text = Resultado
End If
If Operacion = "*" Then
   Resultado = xlong * Val(display.Text)
   display.Text = Resultado
End If
If Operacion = "/" Then
   If CompruebaDiv(Val(display.Text)) = False Then
      MsgBox "No se puede dividir entre 0", vbOKOnly + vbCritical, "Atencion:Error"
      Exit Sub
   End If
   Resultado = xlong / Val(display.Text)
   display.Text = Resultado
End If
End Sub

La división tiene una comprobación por el cual si el dividendo es 0 devuelve el mensaje y no permite continuar (sale de la función)

Como es una calculadora solo trabajas con números por lo que estás obligado a manipular la instrucción Val en todos los casos, porque según veo no usas Label sino TextBox.

Operación es una variable que se maneja a través de una matriz la cual contiene las cuatro operaciones que usas;


Código:
Private Sub cmdOperacion_Click(Index As Integer)
Select Case Index
        Case Is = 0
            Operacion = "*"
            xlong = Val(display.Text)
            display.Text = ""
        Case Is = 1
            Operacion = "-"
            xlong = Val(display.Text)
            display.Text = ""
        Case Is = 2
            Operacion = "/"
            xlong = Val(display.Text)
            display.Text = ""
        Case Is = 3
            Operacion = "+"
            xlong = Val(display.Text)
            display.Text = ""
End Select
End Sub

"Limpia" el display para el nuevo número a insertar.

Para los botones basta con este code (con una matriz, claro está);


Código:
Private Sub cmdN_Click(Index As Integer)
display.Text = display.Text & Index
End Sub

Botones de 0 a 9.

Función que comprueba dividendo;


Código:
Public Function CompruebaDiv(Valor As Integer) As Boolean
If Valor = 0 Then
   CompruebaDiv = False
Else
   CompruebaDiv = True
End If
End Function


Faltaría pulir algunos detalles como por ejemplo el de vaciar variables y display para realizar una nueva cuenta, pero con esto ya te alcanza de base para seguir.

También he notado que no trabajas bien con los tipos de datos, no puedes Asignarle a una variable tipo Long un texto porque lógicamente dará error.

Saludos


« Última modificación: 24 Mayo 2013, 05:57 am por XresH » En línea

[ - Si eres programador y quieres que tus proyectos esten en mi blog(con o sin source), consúltame! - ]
Entra A Mi Blog De Programación | | Dudas en este post :| | >>Clic para ir al Post<<
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
codigo de dos botones de una calculadora
Programación Visual Basic
‭lipman 4 2,888 Último mensaje 5 Noviembre 2006, 12:50 pm
por Jareth
[Código-PyQT4]Calculadora - JaAViEr
Scripting
0x5d 3 4,265 Último mensaje 7 Julio 2011, 22:21 pm
por elhacker_carlos
[Código-PyQT4]Calculadora por secuencias - JaAViEr(0x5d)
Scripting
0x5d 2 3,055 Último mensaje 27 Diciembre 2011, 02:19 am
por 0x5d
[Código-Python-Android]Calculadora por secuencia - JaAViEr(0x5d)
Scripting
0x5d 0 3,360 Último mensaje 27 Diciembre 2011, 02:22 am
por 0x5d
Codigo fuente calculadora De codigos para Blackberry En delhpi 7
Programación General
realunlocker 2 3,270 Último mensaje 17 Octubre 2012, 09:00 am
por washington8277
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines