Bueno amigos tengo una duda con este codigo que no me funciona, tiene que cumplir con las siguientes normas:
Todos conocemos la formula para averiguar raices, donde segun mi gusto D vale b^2 -4(A)(C)
Si D > 0 Entonces que muestre X1 y X2
Si D = 0 Entonces X1 = X2
Si D < 0 entonces que muestre -(b)/ 2*a + SQR o Raiz de (b)^2 -4 (A) (C) / 2*a
Acá esta el código:
Private Sub cmdOperar_Click()
'Declaración de variables
Dim A As Integer, B As Integer, C As Integer, D As Integer, E As Integer, X1 As Long, X2 As Long, aux As Long, funcion As Long
'Asignación de objetos a las variables
A = Val(txtNum1.Text)
B = Val(txtNum2.Text)
C = Val(txtNum3.Text)
D = (B) ^ 2 - 4 * (A) * (C)
E = -(B) / 2 * (A)
X1 = E + (Sqr(D)) / 2 * (A)
X2 = E - (Sqr(D)) / 2 * (A)
aux = (Sqr(D)) / 2 * (A)
funcion = E + aux
'Condiciones
If D > 0 Then
txtRaiz1.Text = Str(X1)
txtRaiz2.Text = Str(X2)
End If
If D = 0 Then
X1 = X2
End If
If D < 0 Then
txtRaiz1.Text = funcion
End If
End Sub
Aca una imagen del programa:
(http://i41.tinypic.com/2w7fyc2.jpg)
Y aca les dejo el proyecto por si lo quieren revisar:
http://www.mediafire.com/?jowqozzzmmj (http://www.mediafire.com/?jowqozzzmmj)
Muchas gracias, no sé que es lo que puede estar saliendo mal :-\
No sé si será, pero puede ser esto (cita de la MSDN):
Nota La función Val sólo reconoce el punto (.) como separador decimal válido. Cuando se utilizan separadores decimales diferentes, como en aplicaciones internacionales, debe utilizar CDbl para convertir una cadena a un número.
Quizás estas usando comas como separador decimal ???
Cita de: MCKSys Argentina en 27 Abril 2010, 05:44 AM
No sé si será, pero puede ser esto (cita de la MSDN):
Nota La función Val sólo reconoce el punto (.) como separador decimal válido. Cuando se utilizan separadores decimales diferentes, como en aplicaciones internacionales, debe utilizar CDbl para convertir una cadena a un número.
Quizás estas usando comas como separador decimal ???
Mmm nop, el Val está bien usado, en VB los puntos (.) son comas y las comas puntos, aunque para el val lo único que hice fue llamar al método .text de las cajas de texto para que cuando el usuario ingrese un valor lo convierta a número (por ej si entra una letra que no es número, la toma como 0)
Igual gracias por tu ayuda, no sé en que estoy mal :-\ a ver si alguien me puede dar una mano
E cogido tu programa y le cambie el codigo de operar, a mi me funciona ay te lo dejo
Private Sub cmdBorrar_Click()
txtRaiz1.Text = ""
txtRaiz2.Text = ""
End Sub
Private Sub cmdOperar_Click()
Dim a As Integer, b As Integer, c As Integer
a = Val(txtNum1.Text)
b = Val(txtNum2.Text)
c = Val(txtNum3.Text)
txtRaiz1.Text = -b + Sqr((b * b) - (4 * a * c)) / 2 * a
txtRaiz1.Text = -b - Sqr((b * b) - (4 * a * c)) / 2 * a
If txtRaiz1.Text = txtRaiz2.Text Then
txtRaiz2.Text = ""
End If
End Sub
Private Sub cmdSalir_Click()
End
End Sub
Como resulvo la raiz cuadrada de 89225...???