I1M2012: Ejercicios de definiciones con condicionales, guardas y patrones (2)
En la clase de hoy del curso Informática (de 1º de Grado en Matemáticas) se han comentado las soluciones de los 3 últimos ejercicios de la 3ª relación sobre definiciones con condicionales, guardas y patrones.
Los ejercicios y sus soluciones se muestran a continuación
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 |
-- --------------------------------------------------------------------- -- Ejercicio 15. (Raíces de una ecuación de segundo grado) Definir la -- función raices de forma que (raices a b c) devuelve la lista de las -- raices reales de la ecuación ax^2 + bx + c = 0. Por ejemplo, -- raices 1 (-2) 1 == [1.0,1.0] -- raices 1 3 2 == [-1.0,-2.0] -- --------------------------------------------------------------------- -- 1ª solución raices_1 a b c = [(-b+d)/t,(-b-d)/t] where d = sqrt (b^2 - 4*a*c) t = 2*a -- 2ª solución raices_2 a b c | d >= 0 = [(-b+e)/(2*a), (-b-e)/(2*a)] | otherwise = error "No tine raices reales" where d = b^2-4*a*c e = sqrt d -- Otra solución es raices3 a b c | d == 0 = [-b/(2*a)] | d > 0 = [(-b+e)/(2*a), (-b-e)/(2*a)] | otherwise = [] where d = b^2-4*a*c e = sqrt d -- --------------------------------------------------------------------- -- Ejercicio 16. En geometría, la fórmula de Herón, descubierta por -- Herón de Alejandría, dice que el área de un triángulo cuyo lados -- miden a, b y c es la raíz cuadrada de s(s-a)(s-b)(s-c) donde s es el -- semiperímetro -- s = (a+b+c)/2 -- Definir la función area tal que (area a b c) es el área de un -- triángulo de lados a, b y c. Por ejemplo, -- area 3 4 5 == 6.0 -- --------------------------------------------------------------------- area a b c = sqrt (s*(s-a)*(s-b)*(s-c)) where s = (a+b+c)/2 -- --------------------------------------------------------------------- -- Ejercicio 17. Los números racionales pueden representarse mediante -- pares de números enteros. Por ejemplo, el número 2/5 puede -- representarse mediante el par (2,5). -- --------------------------------------------------------------------- -- Ejercicio 17.1. Definir la función formaReducida tal que -- (formaReducida x) es la forma reducida del número racional x. Por -- ejemplo, -- formaReducida (4,10) == (2,5) -- --------------------------------------------------------------------- formaReducida (a,b) = (a `div` c, b `div` c) where c = gcd a b -- --------------------------------------------------------------------- -- Ejercicio 17.2. Definir la función sumaRacional tal que -- (sumaRacional x y) es la suma de los números racionales x e y. Por ejemplo, -- sumaRacional (2,3) (5,6) == (3,2) -- --------------------------------------------------------------------- sumaRacional (a,b) (c,d) = formaReducida (a*d+b*c, b*d) -- --------------------------------------------------------------------- -- Ejercicio 17.3. Definir la función productoRacional tal que -- (productoRacional x y) es el producto de los números racionales x e -- y. Por ejemplo, -- productoRacional (2,3) (5,6) == (5,9) -- --------------------------------------------------------------------- productoRacional (a,b) (c,d) = formaReducida (a*c, b*d) -- --------------------------------------------------------------------- -- Ejercicio 17.4. Definir la función igualdadRacional tal que -- (igualdadRacional x y) se verifica si los números racionales x e -- y son iguales. Por ejemplo, -- igualdadRacional (6,9) (10,15) == True -- igualdadRacional (6,9) (11,15) == False -- --------------------------------------------------------------------- igualdadRacional (a,b) (c,d) = a*d == b*c |