Advertisement
lucks232

Untitled

Dec 29th, 2023
935
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 14.05 KB | None | 0 0
  1. from polinomio_clase import Polinomio
  2.  
  3. def crear_polinomio():
  4.     coeficientes = []  # se inicia una lista vacía para almacenar los coeficientes
  5.     grado = int(input("¿Cuál es el grado del polinomio?: "))
  6.  
  7.     # se recorre el rango de grados del polinomio de forma descendente
  8.     for i in reversed(range(grado+1)):
  9.         if i != 0:  # si el término no es el constante
  10.             coef = int(input(f"Escriba el coeficiente del término de x con exponente {i}: "))
  11.             coeficientes.append(coef)  # se agrega el coeficiente a la lista
  12.         else:  # si es el término constante
  13.             coef = int(input(f"Escriba el coeficiente del término constante (sin x): "))
  14.             coeficientes.append(coef)  # se agrega el término constante a la lista
  15.  
  16.     polinomio = Polinomio(coeficientes)  # se crea una instancia del polinomio
  17.  
  18.     print(f"\nPolinomio creado:\n\n{polinomio}\n")
  19.     return polinomio
  20.  
  21. def listar_polinomios():
  22.     polinomios = array_de_polinomios()
  23.  
  24.     print("            Lista de polinomios:")
  25.     print("═══════════════════════════════════════════")
  26.    
  27.     for i, pol in enumerate(polinomios):
  28.         print(f"{i+1}) {pol}")
  29.  
  30. def eliminar_polinomio():
  31.     polinomios = array_de_polinomios()
  32.  
  33.     print("¿Qué polinomio quieres eliminar de la lista? (1,2,3,4...)")
  34.     pol_eliminar = int(input())
  35.  
  36.     polinomios.pop(pol_eliminar-1)
  37.     with open('polinomios.txt', 'w', encoding='utf-8') as file:
  38.         for pols in polinomios:
  39.             for coef in pols.coeficientes:
  40.                 file.write(f"{coef} ")
  41.             file.write("\n")
  42.  
  43. def array_de_polinomios():
  44.     polinomios = []
  45.    
  46.     with open('polinomios.txt', 'r', encoding='utf-8') as file: # leemos el archivo
  47.         for linea in file:
  48.             coeficientes = []
  49.             for num in linea.split():
  50.                 coeficientes.append(int(num))
  51.             polinomios.append(Polinomio(coeficientes))
  52.                
  53.     return polinomios
  54.    
  55. # menu
  56. def menu_principal():
  57.     while True:
  58.         print("╔═════════════════════════════════╗")
  59.         print("║                                 ║")
  60.         print("║      1. Crear un polinomio      ║")
  61.         print("║      2. Listar polinomios       ║")
  62.         print("║      3. Eliminar un polinomio   ║")
  63.         print("║      4. Operar con polinomios   ║")
  64.         print("║      5. Salir                   ║")
  65.         print("║                                 ║")
  66.         print("║             Hecho por L. García ║")
  67.         print("╚═════════════════════════════════╝")
  68.  
  69.         opcion = int(input("Escoge una opción: "))
  70.  
  71.         if opcion == 1:
  72.             polinomio = crear_polinomio()
  73.             while True: #bucle infinito para añadir robustez en caso de mal input
  74.                 respuesta = input("¿Quieres guardar este polinomio? (y/n): ")
  75.                 if respuesta.lower() == 'y' or respuesta.lower() == 'yes':
  76.                     with open('polinomios.txt', 'a', encoding='utf-8') as file:
  77.                         for i, coef in enumerate(polinomio.coeficientes):
  78.                             file.write(f"{coef} ")
  79.                         file.write("\n")
  80.                         break
  81.  
  82.                 elif respuesta.lower() == 'n' or respuesta.lower() == 'no':
  83.                     break
  84.                 else:
  85.                     print("Respuesta inválida")
  86.  
  87.         elif opcion == 2:
  88.             print('\n')
  89.             listar_polinomios()
  90.             print("\nEsta es la lista de polinomios hasta ahora.")
  91.             while True: # bucle infinito para añadir robustez en el input
  92.                 print("m: volver al menú principal         x: salir")
  93.                 respuesta = input()
  94.                 if respuesta.lower() == 'm':
  95.                     menu_principal()
  96.                 else:
  97.                     break
  98.                 break
  99.             break                
  100.        
  101.         elif opcion == 3:
  102.             print('\n')
  103.  
  104.             listar_polinomios()
  105.             eliminar_polinomio()
  106.  
  107.             print("\nPolinomios eliminado de la lista exitosamente.")
  108.  
  109.             while True:
  110.                 print("\nm: volver al menú principal         x: salir")
  111.                 respuesta = input()
  112.                 if respuesta.lower() == 'm':
  113.                     menu_principal()
  114.                 else:
  115.                     break
  116.                 break
  117.             break
  118.  
  119.         elif opcion == 4:
  120.             print("\n               Lista de operaciones:")
  121.             print("══════════════════════════════════════════════")
  122.             print("1) Evaluar un polinomio en un punto dado")
  123.             print("2) Multiplicar un polinomio por un número real")
  124.             print("3) Obtención del polinomio opuesto")
  125.             print("4) Calcular la derivada de un polinomio")
  126.             print("5) Sumar polinomios")
  127.             print("6) Restar polinomios")
  128.             print("7) Multiplicar polinomios")
  129.             print("8) Dividir polinomios")
  130.             print("9) Factorizar un polinomio\n")
  131.            
  132.             print("¿Qué operación quieres realizar? (1,2,3...):")
  133.             respuesta_op = int(input())
  134.  
  135.             if respuesta_op == 1: # evaluar polinomio
  136.                 polinomios = array_de_polinomios()
  137.  
  138.                 listar_polinomios()
  139.  
  140.                 print("\n¿Qué polinomio deseas evaluar de la lista? (1,2,3...): ")
  141.                 input_pol = int(input())
  142.  
  143.                 print("\nEscoja un valor de x sobre el cual quiere evaluar el polinomio seleccionado:")
  144.                 input_valor = float(input())
  145.                
  146.                 if input_valor % 1 == 0:
  147.                     input_valor = int(input_valor)
  148.  
  149.                 pol = polinomios[input_pol-1]
  150.                 valor = pol.evaluar(input_valor)
  151.                
  152.                 print(f"\n{pol} evaluado en {input_valor} es {valor}")
  153.  
  154.                 while True: # bucle infinito para añadir robustez en el input
  155.                     print("\nm: volver al menú principal         x: salir")
  156.                     respuesta = input()
  157.                     if respuesta.lower() == 'm':
  158.                         menu_principal()
  159.                     else:
  160.                         break                    
  161.                 break
  162.            
  163.             if respuesta_op == 2: # multiplicar polinomio por número real
  164.                 polinomios = array_de_polinomios()
  165.  
  166.                 listar_polinomios()
  167.  
  168.                 print("\n¿Con qué polinomio deseas operar de la lista? (1,2,3...): ")
  169.                 input_pol = int(input())
  170.  
  171.                 print("\nEscoja un valor real por el cual quiere multiplicar el polinomio seleccionado:")
  172.                 input_valor = float(input())
  173.  
  174.                 pol = polinomios[input_pol-1]
  175.  
  176.                 if input_valor % 1 == 0:
  177.                     input_valor = int(input_valor)
  178.  
  179.                 mul = pol.mul_real(input_valor)
  180.  
  181.                 print(f"\nEl polinomio resultante de multiplicar {pol} por {input_valor} es {mul}")
  182.  
  183.                 while True: # bucle infinito para añadir robustez en el input
  184.                     print("\nm: volver al menú principal         x: salir")
  185.                     respuesta = input()
  186.                     if respuesta.lower() == 'm':
  187.                         menu_principal()
  188.                     else:
  189.                         break                    
  190.                 break
  191.            
  192.             if respuesta_op == 3: # obtener el polinomio opuesto
  193.                 polinomios = array_de_polinomios()
  194.  
  195.                 listar_polinomios()
  196.  
  197.                 print("\n¿De qué polinomio deseas obtener su opuesto en la lista? (1,2,3...): ")
  198.                 input_pol = int(input())
  199.  
  200.                 pol = polinomios[input_pol-1]
  201.                 pol_opuesto = pol.pol_opuesto()
  202.  
  203.                 print(f"\nEl polinomio opuesto a {pol} es {pol_opuesto}")
  204.  
  205.                 while True: # bucle infinito para añadir robustez en el input
  206.                     print("\nm: volver al menú principal         x: salir")
  207.                     respuesta = input()
  208.                     if respuesta.lower() == 'm':
  209.                         menu_principal()
  210.                     else:
  211.                         break                    
  212.                 break
  213.  
  214.             if respuesta_op == 4: # calcular la derivada de un polinomio
  215.                 polinomios = array_de_polinomios()
  216.  
  217.                 listar_polinomios()
  218.  
  219.                 print("\n¿Qué polinomio deseas derivar de la lista? (1,2,3...): ")
  220.                 input_pol = int(input())
  221.  
  222.                 polinomio = polinomios[input_pol-1]
  223.            
  224.                 pol_derivada = polinomio.derivada()
  225.  
  226.                 print(f"\nLa derivada de {polinomio} es {pol_derivada}")
  227.  
  228.                 while True: # bucle infinito para añadir robustez en el input
  229.                     print("\nm: volver al menú principal         x: salir")
  230.                     respuesta = input()
  231.                     if respuesta.lower() == 'm':
  232.                         menu_principal()
  233.                     else:
  234.                         break                    
  235.                 break
  236.  
  237.             if respuesta_op == 5: # sumar polinomios
  238.                 polinomios = array_de_polinomios()
  239.  
  240.                 listar_polinomios()
  241.  
  242.                 print("\nElige el primer sumando (1,2,3...):")
  243.                 input_pol1 = int(input())
  244.                 print("Elige el segundo sumando (1,2,3...):")
  245.                 input_pol2 = int(input())
  246.  
  247.                 polinomio1 = polinomios[input_pol1-1]
  248.                 polinomio2 = polinomios[input_pol2-1]
  249.  
  250.                 value = polinomio1.suma_pol(polinomio2)
  251.  
  252.                 print(f"\nLa suma entre ambos polinomios es {value}")
  253.  
  254.                 while True: # bucle infinito para añadir robustez en el input
  255.                     print("\nm: volver al menú principal         x: salir")
  256.                     respuesta = input()
  257.                     if respuesta.lower() == 'm':
  258.                         menu_principal()
  259.                     else:
  260.                         break                    
  261.                 break
  262.  
  263.             if respuesta_op == 6: # restar polinomios
  264.                 polinomios = array_de_polinomios()
  265.  
  266.                 listar_polinomios()
  267.  
  268.                 print("\nElige el primer término de la resta (1,2,3...):")
  269.                 input_pol1 = int(input())
  270.                 print("Elige el segundo término de la resta (1,2,3...):")
  271.                 input_pol2 = int(input())
  272.  
  273.                 polinomio1 = polinomios[input_pol1-1]
  274.                 polinomio2 = polinomios[input_pol2-1]
  275.  
  276.                 value = polinomio1.resta_pol(polinomio2)
  277.  
  278.                 print(f"\nLa resta entre ambos polinomios es {value}")
  279.  
  280.                 while True: # bucle infinito para añadir robustez en el input
  281.                     print("\nm: volver al menú principal         x: salir")
  282.                     respuesta = input()
  283.                     if respuesta.lower() == 'm':
  284.                         menu_principal()
  285.                     else:
  286.                         break                    
  287.                 break
  288.            
  289.             if respuesta_op == 7: # multiplicar polinomios
  290.                 polinomios = array_de_polinomios()
  291.  
  292.                 listar_polinomios()
  293.  
  294.                 print("\nElige el primer término de la multiplicación (1,2,3...):")
  295.                 input_pol1 = int(input())
  296.                 print("Elige el segundo término de la multiplicación (1,2,3...):")
  297.                 input_pol2 = int(input())
  298.  
  299.                 polinomio1 = polinomios[input_pol1-1]
  300.                 polinomio2 = polinomios[input_pol2-1]
  301.  
  302.                 value = polinomio1.mul_pol(polinomio2)
  303.  
  304.                 print(f"\nLa multiplicación entre ambos polinomios es {value}")
  305.  
  306.                 while True: # bucle infinito para añadir robustez en el input
  307.                     print("\nm: volver al menú principal         x: salir")
  308.                     respuesta = input()
  309.                     if respuesta.lower() == 'm':
  310.                         menu_principal()
  311.                     else:
  312.                         break                    
  313.                 break
  314.            
  315.             if respuesta_op == 8: # dividir polinomios
  316.                 polinomios = array_de_polinomios()
  317.  
  318.                 listar_polinomios()
  319.  
  320.                 print("\nElige el dividendo de la división (1,2,3...):")
  321.                 input_pol1 = int(input())
  322.                 print("Elige el divisor de la división (1,2,3...):")
  323.                 input_pol2 = int(input())
  324.  
  325.                 polinomio1 = polinomios[input_pol1-1]
  326.                 polinomio2 = polinomios[input_pol2-1]
  327.  
  328.                 value = polinomio1.div_pol(polinomio2)
  329.  
  330.                 print(f"\nLa división entre ambos polinomios da como cociente {value[0]} y como resto {value[1]}")
  331.  
  332.                 while True: # bucle infinito para añadir robustez en el input
  333.                     print("\nm: volver al menú principal         x: salir")
  334.                     respuesta = input()
  335.                     if respuesta.lower() == 'm':
  336.                         menu_principal()
  337.                     else:
  338.                         break                    
  339.                 break
  340.            
  341.             if respuesta_op == 9: # factorizar polinomios
  342.                 polinomios = array_de_polinomios()
  343.  
  344.                 listar_polinomios()
  345.  
  346.                 print("\n¿Qué polinomio deseas factorizar de la lista? (1,2,3...):")
  347.                 input_pol = int(input())
  348.  
  349.                 polinomio = polinomios[input_pol-1]
  350.  
  351.                 value = polinomio.factorizar()
  352.  
  353.                 print(f"\nAl factorizar {polinomio} obtenemos como raices {value}")
  354.  
  355.  
  356.         elif opcion == 5:
  357.             break
  358.  
  359.  
  360. menu_principal()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement