Advertisement
JPablos

Ecuaciones cuadráticas. Simple. Python

Jun 3rd, 2023
833
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 5.20 KB | Science | 0 0
  1. # -*- coding: utf-8 -*-
  2. """
  3. Created on Sun Jun  4 00:20:01 2023
  4.  
  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. @alpha
  9. """
  10.  
  11.  
  12. import tkinter as tk
  13. from math import sqrt
  14.  
  15.  
  16. class Ecuaciones2GradoGUI:
  17.  
  18.     def __init__(self):
  19.         """
  20.        Resuelve una ecuación cuadrática de la forma ax^2 + bx + c = 0.
  21.  
  22.        Args:
  23.            coeficiente_a (float): Coeficiente cuadrático.
  24.            coeficiente_b (float): Coeficiente lineal.
  25.            coeficiente_c (float): Término independiente.
  26.  
  27.        Returns:
  28.            tuple or complex: Soluciones de la ecuación.
  29.        """
  30.         self.root = tk.Tk()
  31.         self.root.title("Calculadora de Ecuaciones de Segundo Grado")
  32.  
  33.         self.label_a = tk.Label(self.root, text="Coeficiente cuadrático (A):")
  34.         self.label_a.pack()
  35.         self.entry_a = tk.Entry(self.root)
  36.         self.entry_a.pack()
  37.  
  38.         self.label_b = tk.Label(self.root, text="Coeficiente lineal (B):")
  39.         self.label_b.pack()
  40.         self.entry_b = tk.Entry(self.root)
  41.         self.entry_b.pack()
  42.  
  43.         self.label_c = tk.Label(self.root, text="Término independiente (C):")
  44.         self.label_c.pack()
  45.         self.entry_c = tk.Entry(self.root)
  46.         self.entry_c.pack()
  47.  
  48.         self.button_calcular = tk.Button(
  49.             self.root, text="Calcular", command=self.calcular_ecuacion)
  50.         self.button_calcular.pack()
  51.  
  52.         self.button_limpiar = tk.Button(
  53.             self.root, text="Limpiar Campos", command=self.limpiar_campos)
  54.         self.button_limpiar.pack()
  55.  
  56.         self.textarea_resultado = tk.Text(self.root, height=10, width=80)
  57.         self.textarea_resultado.insert(
  58.             tk.END, "Resuelve una ecuación cuadrática de la forma ax^2 + bx + c = 0")
  59.         self.textarea_resultado.pack()
  60.  
  61.         self.root.mainloop()
  62.  
  63.     def calcular_ecuacion(self):
  64.         """
  65.        Resuelve una ecuación cuadrática de la forma ax^2 + bx + c = 0.
  66.  
  67.        Args:
  68.            coeficiente_a (float): Coeficiente cuadrático.
  69.            coeficiente_b (float): Coeficiente lineal.
  70.            coeficiente_c (float): Término independiente.
  71.  
  72.        Returns:
  73.            tuple or complex: Soluciones de la ecuación.
  74.        """
  75.         A = float(self.entry_a.get())
  76.         B = float(self.entry_b.get())
  77.         C = float(self.entry_c.get())
  78.  
  79.         resultado = self.resolver_ecuacion_cuadratica(A, B, C)
  80.         self.mostrar_resultado(resultado)
  81.  
  82.     def resolver_ecuacion_cuadratica(self, A, B, C):
  83.         """
  84.        Resuelve una ecuación cuadrática de la forma ax^2 + bx + c = 0.
  85.  
  86.        Args:
  87.            coeficiente_a (float): Coeficiente cuadrático.
  88.            coeficiente_b (float): Coeficiente lineal.
  89.            coeficiente_c (float): Término independiente.
  90.  
  91.        Returns:
  92.            tuple or complex: Soluciones de la ecuación.
  93.        """
  94.         if A == 0:
  95.             return self.ecuacion_lineal(B, C)
  96.         else:
  97.             discriminante = B**2 - 4*A*C
  98.             if discriminante < 0:
  99.                 return self.solucion_compleja(A, B, C)
  100.             else:
  101.                 x1 = (-B + sqrt(discriminante)) / (2*A)
  102.                 x2 = (-B - sqrt(discriminante)) / (2*A)
  103.                 return f"Las soluciones de la ecuación son:\nx1 = {x1}\nx2 = {x2}"
  104.  
  105.     def ecuacion_lineal(self, B, C):
  106.         """
  107.        Resuelve una ecuación cuadrática de la forma ax^2 + bx + c = 0.
  108.  
  109.        Informa sí la ecuación es una recta.
  110.  
  111.        Returns:
  112.            tuple or complex: Soluciones de la ecuación.
  113.        """
  114.         if B == 0:
  115.             return "La ecuación es una recta con pendiente cero: x puede tomar cualquier valor."
  116.         else:
  117.             x = -C / B
  118.             return f"La solución de la ecuación es x = {x}"
  119.  
  120.     def solucion_compleja(self, A, B, C):
  121.         """
  122.        Resuelve una ecuación cuadrática de la forma ax^2 + bx + c = 0.
  123.  
  124.        Genera un texto indicando que las soluciones son números complejos
  125.  
  126.        Returns:
  127.            tuple or complex: Soluciones de la ecuación.
  128.        """
  129.         parte_real = -B / (2*A)
  130.         parte_imaginaria = sqrt(-((B**2) - (4*A*C))) / (2*A)
  131.         raiz1 = complex(parte_real, parte_imaginaria)
  132.         raiz2 = complex(parte_real, -parte_imaginaria)
  133.         return f"Las soluciones de la ecuación son números complejos:\nx1 = {raiz1}\nx2 = {raiz2}"
  134.  
  135.     def mostrar_resultado(self, resultado):
  136.         """
  137.        Resuelve una ecuación cuadrática de la forma ax^2 + bx + c = 0.
  138.  
  139.        Muestra resultados en área de texto
  140.  
  141.        Returns:
  142.            tuple or complex: Soluciones de la ecuación.
  143.        """
  144.         self.textarea_resultado.delete("1.0", tk.END)
  145.         self.textarea_resultado.insert(tk.END, resultado)
  146.  
  147.     def limpiar_campos(self):
  148.         """
  149.        Resuelve una ecuación cuadrática de la forma ax^2 + bx + c = 0.
  150.  
  151.        Limpia las cajas de ingreso de coeficientes.
  152.  
  153.        Returns:
  154.            tuple or complex: Soluciones de la ecuación.
  155.        """
  156.         self.entry_a.delete(0, tk.END)
  157.         self.entry_b.delete(0, tk.END)
  158.         self.entry_c.delete(0, tk.END)
  159.  
  160.  
  161. Ecuaciones2GradoGUI()
  162.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement