Código: Seleccionar todo
#include <GUIConstants.au3>
#include <EditConstants.au3>
$gui = GUICreate ("Ecuaciones de 2º grado", 300, 100, -1, -1)
GUICtrlCreateLabel ("Ecuación:", 10, 10, 70, 20)
$entrada = GUICtrlCreateInput ("", 80, 10, 110, 20)
$boton = GUICtrlCreateButton ("Calcular", 200, 10, 90, 20)
GUICtrlCreateLabel ("x1:", 10, 40, 50, 20)
$ix1 = GUICtrlCreateInput ("", 80, 40, 70, 20, $ES_READONLY)
GUICtrlCreateLabel ("x2:", 10, 70, 50, 20)
$ix2 = GUICtrlCreateInput ("", 80, 70, 70, 20, $ES_READONLY)
GUISetState(@SW_SHOW, $gui)
While 1
$msg = GUIGetMsg ()
Switch $msg
Case $boton
$ecuacion = GUICtrlRead ($entrada)
$resulta = StringRegExp ($ecuacion, "(\+|\-)*(\d)*(x2)(\+|\-)*(\d)*(x)(\+|\-)*(\d)*(\=)(0)", 1)
If @error = 0 Then
$a = StringRegExpReplace ($ecuacion, "(\+|\-)*(\d)*(x2)(\+|\-)*(\d)*(x)(\+|\-)*(\d)*(\=)(0)", "$1$2")
$b = StringRegExpReplace ($ecuacion, "(\+|\-)*(\d)*(x2)(\+|\-)*(\d)*(x)(\+|\-)*(\d)*(\=)(0)", "$4$5")
$c = StringRegExpReplace ($ecuacion, "(\+|\-)*(\d)*(x2)(\+|\-)*(\d)*(x)(\+|\-)*(\d)*(\=)(0)", "$7$8")
$a = Number($a)
$b = Number($b)
$c = Number($c)
$raiz = $b * $b + (4 * $a * $c)
$raiz1 = - $b + Sqrt ($raiz)
$raiz2 = - $b - Sqrt ($raiz)
$x1 = Round($raiz1/(2*$a), 2)
$x2 = Round($raiz2/(2*$a), 2)
GUICtrlSetData ($ix1, $x1)
GUICtrlSetData ($ix2, $x2)
ConsoleWrite ("x2 = " & $x2 & @CRLF)
ElseIf @error = 1 Then
MsgBox (0, "Ecuaciones de 2º grado", "Error de ecuación, vuelve a introducirla")
GUICtrlSetData ($entrada, "")
ConsoleWrite ("No existe")
EndIf
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd