• Martes 16 de Abril de 2024, 10:47

Autor Tema:  Ecuacion 2do Grado.  (Leído 2257 veces)

ganryu

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
Ecuacion 2do Grado.
« en: Miércoles 27 de Enero de 2010, 10:12 »
0
Holas, hice este programita para resolver ecuaciones de segundo grado, pero querria mejorar el código de manera que no tenga tantos condicionales anidados, pero no se me ocurre como hacerlo  :brickwall:. Disculpen si mi pregunta es muy básica  :P .
Código: Python
  1. # -*- coding: UTF-8 -*-
  2. print "Ecuación ax² + bx + c = 0"
  3.  
  4. a = float(raw_input("Escribe el valor del coeficiente a: "))
  5. b = float(raw_input("Escribe el valor del coeficiente b: "))
  6. c = float(raw_input("Escribe el valor del coeficiente c: "))
  7. det = b ** 2 - 4 * a * c #cuando es mayor que 0 la raiz da un numero real, cuando es menor la raiz no tiene solucion real.
  8.  
  9.  
  10. if det < 0:
  11.     print "Sin solución real."
  12. elif det == 0:
  13.     if a == 0 and c == 0: #esto es para evitar usar -b/2a que da como resultado 0/0.
  14.         print "Todos los números son solución."
  15.     elif a == 0:
  16.         print "No tiene solución"
  17.     else:
  18.         print "Una única solución real:", (-b) / (2 * a) #debido a que la raiz vale 0.
  19. elif a == 0: #en este caso la ecuacion es una ecuacion de primer grado.
  20.     if b == 0:
  21.         if c == 0:
  22.             print "Todos los numeros son solución"
  23.         else:
  24.             print "No tiene solución"
  25.     else:
  26.         print "Una solución:", -c / b  
  27. else:    
  28.     print "Dos soluciones reales:", (-b +(det ** 0.5)) / (2*a), (-b -(det ** 0.5)) / (2 * a)
  29.  
  30.  
  31.  

RadicalEd

  • Moderador
  • ******
  • Mensajes: 2430
  • Nacionalidad: co
    • Ver Perfil
Re: Ecuacion 2do Grado.
« Respuesta #1 en: Miércoles 27 de Enero de 2010, 13:41 »
0
Pos ayer estaba haciendo lo mismo, si te sirve mira este código aunque realmente si lo que te interesa son las decisiones tú lo acomodarás, no es difícil:
Código: Python
  1. import math
  2.  
  3. def separar(ecu):
  4.    """Esta funcion separara cada valor de la ecuacion"""
  5.    ecu = ecu.replace('t', '') #Se reemplazan los tabulados
  6.    nueva = ecu.split('x^2') #quitamos los valores con x^2 y x
  7.    nueva += nueva[1].split('x')
  8.    #Se elimina el indice 1 de la lista y lo dejamos
  9.    #con los datos necesarios
  10.    nueva.remove(nueva[1])
  11.    #Ahora recorremos la lista para no dejar signos sin valores
  12.    #creamos un contador para el indice
  13.    cont = 0
  14.    for h in nueva:
  15.  if h == '+' or h == '-' or h == '': #Si es un signo +/- o sino es nada
  16.      h += '1'
  17.  nueva.remove(nueva[cont])
  18.  nueva.insert(cont, h)
  19.  cont += 1
  20.    x = cuadratica(int(nueva[0]), int(nueva[1]), int(nueva[2]))
  21.    return x
  22.  
  23.  
  24. ##Esta es tú función
  25. def cuadratica(a, b, c):
  26.    """Vamos a obtener el valor de X por medio de la ecuacion cuadratica"""
  27.    raiz = math.sqrt((b**2)-(4*a*c))
  28.    x1 = (-b + raiz)/(2*a)
  29.    x2 = (-b - raiz)/(2*a)
  30.    lista = [str(x1), str(x2)]
  31.    return lista
  32.  
  33. archi = open('quadratic.txt').readlines()
  34. suma = 0
  35. for h in archi:
  36.    z = separar(h)
  37.    for l in z:
  38.        #Si al final sale un .0 entonces lo volvemos entero y se suma
  39.        if l[-2:] == '.0':
  40.            suma += int(l.replace('.0', ''))
  41.  
  42. print suma
  43.  
El pasado son solo recuerdos, el futuro son solo sueños

ganryu

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
Re: Ecuacion 2do Grado.
« Respuesta #2 en: Miércoles 27 de Enero de 2010, 20:41 »
0
Muchas gracias, soy nuevo en esto de programar asi que me van a ver durante un tiempo por aca  :), la idea que tengo es ir aprendiendo sobre la marcha haciendo programas.

RadicalEd

  • Moderador
  • ******
  • Mensajes: 2430
  • Nacionalidad: co
    • Ver Perfil
Re: Ecuacion 2do Grado.
« Respuesta #3 en: Miércoles 27 de Enero de 2010, 20:43 »
0
Eres bienvenido y  :good: por escoger Python, es un gran lenguaje y estás en el mejor foro en todo el multiverso y paralelos.
El pasado son solo recuerdos, el futuro son solo sueños