Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # -*- coding: utf-8 -*-
- """
- Created on Sun Jun 4 00:20:01 2023
- Editado
- Resuelve una ecuación cuadrática de la forma ax^2 + bx + c = 0.
- Usa tkinter para generar una interfaz gráfica
- @JP
- """
- import tkinter as tk
- from math import sqrt
- class Ecuaciones2GradoGUI:
- def __init__(self):
- """Inicializa la interfaz gráfica."""
- self.root = tk.Tk()
- self.root.title("Calculadora de Ecuaciones de Segundo Grado")
- # Crear y empaquetar widgets
- self.entries = {}
- for label_text, key in [
- ("Coeficiente cuadrático (A):", "a"),
- ("Coeficiente lineal (B):", "b"),
- ("Término independiente (C):", "c")
- ]:
- label = tk.Label(self.root, text=label_text)
- label.pack()
- entry = tk.Entry(self.root)
- entry.pack()
- self.entries[key] = entry
- self.button_calcular = tk.Button(self.root, text="Calcular", command=self.calcular_ecuacion)
- self.button_calcular.pack()
- self.button_limpiar = tk.Button(self.root, text="Limpiar Campos", command=self.limpiar_campos)
- self.button_limpiar.pack()
- self.textarea_resultado = tk.Text(self.root, height=10, width=80)
- self.textarea_resultado.insert(tk.END, "Resuelve una ecuación cuadrática de la forma ax^2 + bx + c = 0")
- self.textarea_resultado.pack()
- self.root.mainloop()
- def calcular_ecuacion(self):
- """Calcula y muestra las soluciones de la ecuación cuadrática."""
- try:
- A = float(self.entries["a"].get())
- B = float(self.entries["b"].get())
- C = float(self.entries["c"].get())
- resultado = self.resolver_ecuacion_cuadratica(A, B, C)
- except ValueError:
- resultado = "Error: Ingresa valores numéricos válidos."
- self.mostrar_resultado(resultado)
- def resolver_ecuacion_cuadratica(self, A, B, C):
- """Resuelve la ecuación cuadrática y devuelve las soluciones."""
- if A == 0:
- return self.ecuacion_lineal(B, C)
- discriminante = B**2 - 4*A*C
- if discriminante < 0:
- return self.solucion_compleja(A, B, C)
- x1 = (-B + sqrt(discriminante)) / (2*A)
- x2 = (-B - sqrt(discriminante)) / (2*A)
- return f"Las soluciones de la ecuación son:\nx1 = {x1}\nx2 = {x2}"
- def ecuacion_lineal(self, B, C):
- """Resuelve una ecuación lineal (cuando A = 0)."""
- if B == 0:
- return "La ecuación es una recta con pendiente cero: x puede tomar cualquier valor."
- return f"La solución de la ecuación es x = {-C / B}"
- def solucion_compleja(self, A, B, C):
- """Devuelve soluciones complejas cuando el discriminante es negativo."""
- parte_real = -B / (2*A)
- parte_imaginaria = sqrt(abs(B**2 - 4*A*C)) / (2*A)
- raiz1 = complex(parte_real, parte_imaginaria)
- raiz2 = complex(parte_real, -parte_imaginaria)
- return f"Las soluciones de la ecuación son números complejos:\nx1 = {raiz1}\nx2 = {raiz2}"
- def mostrar_resultado(self, resultado):
- """Muestra el resultado en el área de texto."""
- self.textarea_resultado.delete("1.0", tk.END)
- self.textarea_resultado.insert(tk.END, resultado)
- def limpiar_campos(self):
- """Limpia los campos de entrada."""
- for entry in self.entries.values():
- entry.delete(0, tk.END)
- Ecuaciones2GradoGUI()
Advertisement
Add Comment
Please, Sign In to add comment