JPablos

Ecuaciones cuadráticas. Simple. Python

Jun 3rd, 2023 (edited)
917
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.47 KB | Science | 0 0
  1. # -*- coding: utf-8 -*-
  2. """
  3. Created on Sun Jun  4 00:20:01 2023
  4. Editado
  5. Resuelve una ecuación cuadrática de la forma ax^2 + bx + c = 0.
  6. Usa tkinter para generar una interfaz gráfica
  7.  
  8. @JP
  9. """
  10.  
  11. import tkinter as tk
  12. from math import sqrt
  13.  
  14. class Ecuaciones2GradoGUI:
  15.     def __init__(self):
  16.         """Inicializa la interfaz gráfica."""
  17.         self.root = tk.Tk()
  18.         self.root.title("Calculadora de Ecuaciones de Segundo Grado")
  19.  
  20.         # Crear y empaquetar widgets
  21.         self.entries = {}
  22.         for label_text, key in [
  23.             ("Coeficiente cuadrático (A):", "a"),
  24.             ("Coeficiente lineal (B):", "b"),
  25.             ("Término independiente (C):", "c")
  26.         ]:
  27.             label = tk.Label(self.root, text=label_text)
  28.             label.pack()
  29.             entry = tk.Entry(self.root)
  30.             entry.pack()
  31.             self.entries[key] = entry
  32.  
  33.         self.button_calcular = tk.Button(self.root, text="Calcular", command=self.calcular_ecuacion)
  34.         self.button_calcular.pack()
  35.  
  36.         self.button_limpiar = tk.Button(self.root, text="Limpiar Campos", command=self.limpiar_campos)
  37.         self.button_limpiar.pack()
  38.  
  39.         self.textarea_resultado = tk.Text(self.root, height=10, width=80)
  40.         self.textarea_resultado.insert(tk.END, "Resuelve una ecuación cuadrática de la forma ax^2 + bx + c = 0")
  41.         self.textarea_resultado.pack()
  42.  
  43.         self.root.mainloop()
  44.  
  45.     def calcular_ecuacion(self):
  46.         """Calcula y muestra las soluciones de la ecuación cuadrática."""
  47.         try:
  48.             A = float(self.entries["a"].get())
  49.             B = float(self.entries["b"].get())
  50.             C = float(self.entries["c"].get())
  51.             resultado = self.resolver_ecuacion_cuadratica(A, B, C)
  52.         except ValueError:
  53.             resultado = "Error: Ingresa valores numéricos válidos."
  54.         self.mostrar_resultado(resultado)
  55.  
  56.     def resolver_ecuacion_cuadratica(self, A, B, C):
  57.         """Resuelve la ecuación cuadrática y devuelve las soluciones."""
  58.         if A == 0:
  59.             return self.ecuacion_lineal(B, C)
  60.         discriminante = B**2 - 4*A*C
  61.         if discriminante < 0:
  62.             return self.solucion_compleja(A, B, C)
  63.         x1 = (-B + sqrt(discriminante)) / (2*A)
  64.         x2 = (-B - sqrt(discriminante)) / (2*A)
  65.         return f"Las soluciones de la ecuación son:\nx1 = {x1}\nx2 = {x2}"
  66.  
  67.     def ecuacion_lineal(self, B, C):
  68.         """Resuelve una ecuación lineal (cuando A = 0)."""
  69.         if B == 0:
  70.             return "La ecuación es una recta con pendiente cero: x puede tomar cualquier valor."
  71.         return f"La solución de la ecuación es x = {-C / B}"
  72.  
  73.     def solucion_compleja(self, A, B, C):
  74.         """Devuelve soluciones complejas cuando el discriminante es negativo."""
  75.         parte_real = -B / (2*A)
  76.         parte_imaginaria = sqrt(abs(B**2 - 4*A*C)) / (2*A)
  77.         raiz1 = complex(parte_real, parte_imaginaria)
  78.         raiz2 = complex(parte_real, -parte_imaginaria)
  79.         return f"Las soluciones de la ecuación son números complejos:\nx1 = {raiz1}\nx2 = {raiz2}"
  80.  
  81.     def mostrar_resultado(self, resultado):
  82.         """Muestra el resultado en el área de texto."""
  83.         self.textarea_resultado.delete("1.0", tk.END)
  84.         self.textarea_resultado.insert(tk.END, resultado)
  85.  
  86.     def limpiar_campos(self):
  87.         """Limpia los campos de entrada."""
  88.         for entry in self.entries.values():
  89.             entry.delete(0, tk.END)
  90.  
  91.  
  92. Ecuaciones2GradoGUI()
Advertisement
Add Comment
Please, Sign In to add comment