[Ayuda] Solucionador de raíces cuadráticas

Iniciado por Dreamaker, 27 Abril 2010, 03:02 AM

0 Miembros y 1 Visitante están viendo este tema.

Dreamaker

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:

Código (vb) [Seleccionar]
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:



Y aca les dejo el proyecto por si lo quieren revisar:

http://www.mediafire.com/?jowqozzzmmj

Muchas gracias, no sé que es lo que puede estar saliendo mal :-\

MCKSys Argentina

#1
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 ???
MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."


Dreamaker

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

Maik33

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


MontiChachitoMontalvo

Como resulvo la raiz cuadrada de 89225...???

engel lex

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.