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

 

 


Tema destacado:


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  PROBLEMA CON NUMERO IMAGINARIO
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: PROBLEMA CON NUMERO IMAGINARIO  (Leído 1,480 veces)
Sergioemus

Desconectado Desconectado

Mensajes: 2


Ver Perfil
PROBLEMA CON NUMERO IMAGINARIO
« en: 22 Noviembre 2011, 04:53 am »

Estoy realizando un programa que resuelve ecuaciones de segundo grado con la formula general .. Asi obtener las dos raices ..

Bueno .. toda va bien el programa corre excelente y da resultados correctos , el problema es cuando metes algun dato que hace que nos de un numero imaginario
sqr(numero negativo) .. Ahi es donde esta el problema .. Tengo que agregar una i que representa un numero imaginario les paso el codigo para que lo chequen .. la pregunta del millon es

¿Como hacerle para agregarle la i ?




Option Explicit
Dim a As Double
Dim b As Double
Dim c As Double
-------------------------------------------------------------------------------------------------

Private Sub Formula(a As Double, b As Double, c As Double, d As Double)

Dim raiz1 As Double
Dim raiz2 As Double

d = (b ^ 2 - 4 * a * c)

If d < 0 Then ' Aqui me atore

raiz1 = (-b + Sqr(d)) / (2 * a)

raiz2 = (-b - Sqr(d)) / (2 * a)

lblResultado1.Caption = raiz1
lblResultado2.Caption = raiz2

end sub

-------------------------------------------------------------------------------------------------

Private Sub cmdCalcular_Click()
If txta = "" Then
    MsgBox "Ingrese el valor a", vbCritical, "Error"
        txta.SetFocus
ElseIf txtb = "" Then
    MsgBox "Ingrese el valor b", vbCritical, "Error"
        txtb.SetFocus
ElseIf txtc = "" Then
    MsgBox "Ingrese el valor c", vbCritical, "Error"
        txtc.SetFocus
    Else
        a = Val(txta.Text)
        b = Val(txtb.Text)
        c = Val(txtc.Text)
       
End If


Call Formula(a, b, c)


End Sub



En línea

BlackZeroX (Astaroth)
Wiki

Desconectado Desconectado

Mensajes: 3.132


I'Love...!¡.


Ver Perfil WWW
Re: PROBLEMA CON NUMERO IMAGINARIO
« Respuesta #1 en: 22 Noviembre 2011, 08:13 am »

Primero aprendete las leyes...

* Solamente podemos cancelar ese numero imaginario cuando esta al cuadro (cancelando la raiz) y solo obtendriamos el radical, de otra manera no se puede...

"i" solo es equitativo a la raiz de "-1" si es otro numero se deben aplicar propiedades...

Código
  1.  
  2. Option Explicit
  3.  
  4. Private Sub Form_Load()
  5. Dim qwX1    As Double
  6. Dim qwX2    As Double
  7.    Select Case scuation2Grade(1, 5, 8, qwX1, qwX2)
  8.        Case 0
  9.            MsgBox "X1 = " & qwX1 & vbCrLf & "X2 = " & qwX2
  10.        Case 1
  11.            MsgBox "La variable a no puede ser 0."
  12.        Case (-1)
  13.            MsgBox "Se ha producido una ecuacion que implica un numero imaginario (No se puede resolver de la manera habitual)."
  14.    End Select
  15. End Sub
  16.  
  17. Public Function scuation2Grade(ByVal a As Double, ByVal b As Double, ByVal c As Double, ByRef qwOutX1 As Double, ByRef qwOutX2 As Double) As Long
  18. '   //  Retorna 1   si es una divicion Infinita (Divicion entre 0) por teoria de limites.
  19. '   //  Retorna 0   si todo fue correctamente.
  20. '   //  Retorna -1  si se produjo una operacion que involucra un numero imaginario (Dicha operacion se muestra en el Debug).
  21. Dim qwSqr    As Double
  22.    scuation2Grade = 1
  23.    If (a = &H0) Then Exit Function         '   //  No se puede realizar una divicion entre cero.
  24.    qwSqr = (b * b) - (4 * a * c)
  25.    If (qwSqr > &H0) Then                     '   //  Numero imaginario...
  26.        qwOutX1 = (Sqr(qwSqr) - b) / (2 * a)
  27.        qwOutX2 = (Sqr(qwSqr) - b) / (2 * a)
  28.        scuation2Grade = 0
  29.    Else
  30.        qwSqr = (qwSqr * (-1))
  31.        Debug.Print "X1 = (" & b & " - sqr(" & qwSqr & ") * i) / " & (2 * a)
  32.        Debug.Print "X2 = (" & b & " + sqr(" & qwSqr & ") * i) / " & (2 * a)
  33.        scuation2Grade = -1
  34.    End If
  35. End Function
  36.  
  37.  

Dulces Lunas!¡.


« Última modificación: 22 Noviembre 2011, 08:15 am por BlackZeroX (Astaroth) » En línea




CScript (Actualizado 26/06/2013).

FileX <-- Re-modelando...
Web Principal-->[ Blog(VB6/C/C++) | Host File | Scan Port) ]

The Dark Shadow is my passion.
El infierno es mi Hogar, mi novia es Lilit y el metal mi relig
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Problema de digitos de un número.
Ejercicios
j retirado 2 6,272 Último mensaje 21 Agosto 2009, 02:33 am
por Caballero Maldito
detectando numero primos (problema)
Programación C/C++
Darioxhcx 9 3,263 Último mensaje 17 Mayo 2010, 07:38 am
por Og.
problema con numero de procesadores en windows
Windows
Bleach@lex 2 3,669 Último mensaje 27 Septiembre 2010, 16:08 pm
por Randomize
Acierta el numero PROBLEMA
Programación C/C++
x I HACK YOU x 6 1,433 Último mensaje 1 Junio 2015, 00:17 am
por 0xFer
Casi programación, autoprogramación, IA de bot imaginario, IA para humano.
Programación General
Tachikomaia 0 232 Último mensaje 20 Abril 2020, 09:28 am
por Tachikomaia
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines