Foro de elhacker.net

Programación => Ejercicios => Mensaje iniciado por: seryioo en 18 Julio 2018, 10:45 am



Título: [Haskell] Soluciones reales de una ecuación de segundo grado
Publicado por: seryioo en 18 Julio 2018, 10:45 am
Buenos días.
Estoy liado con Haskell que me la dejé para verano en la carrera.

El ejercicio dice lo siguiente:

Consideremos la ecuación de segundo grado ax2 + bx + c = 0.
a) Define una función raíces que tome tres parámetros (correspondientes a los coeficientes a, b y c
de la ecuación) y devuelva una tupla con las dos soluciones reales de la ecuación (para calcular la
raíz cuadrada, usa la función predefinida sqrt). Recuerda que el discriminante se define como b2-
4ac y que la ecuación tiene raíces reales si el discriminante no es negativo.


Yo he hecho esto:

Código
  1. raices :: Float-> Float-> Float-> (Float, Float)
  2. raices a b c | discriminante<0 = error "Raices no reales"
  3.             | otherwise = ((-b + raiz)/denominador, (-b - raiz)/denominador)
  4.  where
  5.    discriminante = (b*b - 4*a*c)
  6. raiz          = sqrt discriminante
  7. denominador   = 2*a

Pero me tira el siguiente error:

Código
  1. parse error on input `='
  2.    Perhaps you need a 'let' in a 'do' block?
  3.    e.g. 'let x = 5' instead of 'x = 5'
  4.   |
  5. 91 |         raiz          = sqrt discriminante
  6.   |                       ^


La solución ya la tengo, pero quiero saber que error estoy cometiendo, ya que no es la primera vez que me aparece.

Gracias!