{"id":2238,"date":"2012-10-18T17:05:17","date_gmt":"2012-10-18T17:05:17","guid":{"rendered":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/?p=2238"},"modified":"2013-03-08T05:44:48","modified_gmt":"2013-03-08T05:44:48","slug":"i1m2012-ejercicios-de-definiciones-con-condicionales-guardas-y-patrones-2","status":"publish","type":"post","link":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/i1m2012-ejercicios-de-definiciones-con-condicionales-guardas-y-patrones-2\/","title":{"rendered":"I1M2012: Ejercicios de definiciones con condicionales, guardas y patrones (2)"},"content":{"rendered":"<p>En la clase de hoy del curso <a href=\"http:\/\/www.cs.us.es\/~jalonso\/cursos\/i1m-12\">Inform\u00e1tica (de 1\u00ba de Grado en Matem\u00e1ticas)<\/a> se han comentado las soluciones de los 3 \u00faltimos ejercicios de la  <a href=\"https:\/\/www.glc.us.es\/~jalonso\/ejerciciosI1M2012G2\/images\/a\/a9\/Rel_3.hs\">3\u00aa relaci\u00f3n<\/a> sobre definiciones con condicionales, guardas y patrones.<\/p>\n<p>Los ejercicios y sus soluciones se muestran a continuaci\u00f3n<br \/>\n<!--more--><\/p>\n<pre lang=\"haskell\">\r\n-- ---------------------------------------------------------------------\r\n-- Ejercicio 15. (Ra\u00edces de una ecuaci\u00f3n de segundo grado) Definir la\r\n-- funci\u00f3n raices de forma que (raices a b c) devuelve la lista de las\r\n-- raices reales de la ecuaci\u00f3n  ax^2 + bx + c = 0. Por ejemplo, \r\n--    raices 1 (-2) 1 == [1.0,1.0]\r\n--    raices 1 3 2    == [-1.0,-2.0]\r\n-- ---------------------------------------------------------------------\r\n\r\n-- 1\u00aa soluci\u00f3n\r\nraices_1 a b c = [(-b+d)\/t,(-b-d)\/t]\r\n    where d = sqrt (b^2 - 4*a*c)\r\n          t = 2*a\r\n\r\n-- 2\u00aa soluci\u00f3n\r\nraices_2 a b c\r\n    | d >= 0    = [(-b+e)\/(2*a), (-b-e)\/(2*a)]\r\n    | otherwise = error \"No tine raices reales\"\r\n    where d = b^2-4*a*c\r\n          e = sqrt d \r\n\r\n-- Otra soluci\u00f3n es\r\nraices3 a b c\r\n    | d == 0    =  [-b\/(2*a)]\r\n    | d >  0    =  [(-b+e)\/(2*a), (-b-e)\/(2*a)]\r\n    | otherwise =  []\r\n    where d = b^2-4*a*c\r\n          e = sqrt d\r\n\r\n-- ---------------------------------------------------------------------\r\n-- Ejercicio 16. En geometr\u00eda, la f\u00f3rmula de Her\u00f3n, descubierta por\r\n-- Her\u00f3n de Alejandr\u00eda, dice que el \u00e1rea de un tri\u00e1ngulo cuyo lados\r\n-- miden a, b y c es la ra\u00edz cuadrada de s(s-a)(s-b)(s-c) donde s es el\r\n-- semiper\u00edmetro \r\n--    s = (a+b+c)\/2\r\n-- Definir la funci\u00f3n area tal que (area a b c) es el \u00e1rea de un\r\n-- tri\u00e1ngulo de lados a, b y c. Por ejemplo,\r\n--    area 3 4 5  ==  6.0\r\n-- ---------------------------------------------------------------------\r\n\r\narea a b c = sqrt (s*(s-a)*(s-b)*(s-c))\r\n             where s = (a+b+c)\/2\r\n\r\n-- ---------------------------------------------------------------------\r\n-- Ejercicio 17. Los n\u00fameros racionales pueden representarse mediante\r\n-- pares de n\u00fameros enteros. Por ejemplo, el n\u00famero 2\/5 puede\r\n-- representarse mediante el par (2,5). \r\n-- ---------------------------------------------------------------------\r\n-- Ejercicio 17.1. Definir la funci\u00f3n formaReducida tal que\r\n-- (formaReducida x) es la forma reducida del n\u00famero racional x. Por\r\n-- ejemplo, \r\n--    formaReducida (4,10)  ==  (2,5)\r\n-- ---------------------------------------------------------------------\r\n\r\nformaReducida (a,b) = (a `div` c, b  `div` c)\r\n    where c = gcd a b\r\n\r\n-- ---------------------------------------------------------------------\r\n-- Ejercicio 17.2. Definir la funci\u00f3n sumaRacional tal que \r\n-- (sumaRacional x y) es la suma de los n\u00fameros racionales x e y. Por ejemplo,\r\n--    sumaRacional (2,3) (5,6)  ==  (3,2)\r\n-- ---------------------------------------------------------------------\r\n\r\nsumaRacional (a,b) (c,d) = formaReducida (a*d+b*c, b*d)\r\n\r\n-- ---------------------------------------------------------------------\r\n-- Ejercicio 17.3. Definir la funci\u00f3n productoRacional tal que \r\n-- (productoRacional x y) es el producto de los n\u00fameros racionales x e\r\n-- y. Por ejemplo, \r\n--    productoRacional (2,3) (5,6)  ==  (5,9)\r\n-- ---------------------------------------------------------------------\r\n\r\nproductoRacional (a,b) (c,d) = formaReducida (a*c, b*d)\r\n\r\n-- ---------------------------------------------------------------------\r\n-- Ejercicio 17.4. Definir la funci\u00f3n igualdadRacional tal que \r\n-- (igualdadRacional x y) se verifica si los n\u00fameros racionales x e\r\n-- y son iguales. Por ejemplo, \r\n--    igualdadRacional (6,9) (10,15)  ==  True\r\n--    igualdadRacional (6,9) (11,15)  ==  False\r\n-- ---------------------------------------------------------------------\r\n\r\nigualdadRacional (a,b) (c,d) = a*d == b*c\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>En la clase de hoy del curso Inform\u00e1tica (de 1\u00ba de Grado en Matem\u00e1ticas) se han comentado las soluciones de los 3 \u00faltimos ejercicios de la 3\u00aa relaci\u00f3n sobre definiciones con condicionales, guardas y patrones. Los ejercicios y sus soluciones se muestran a continuaci\u00f3n<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"footnotes":"","_jetpack_memberships_contains_paid_content":false},"categories":[1],"tags":[298],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_likes_enabled":false,"_links":{"self":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/posts\/2238"}],"collection":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/comments?post=2238"}],"version-history":[{"count":2,"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/posts\/2238\/revisions"}],"predecessor-version":[{"id":2651,"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/posts\/2238\/revisions\/2651"}],"wp:attachment":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/media?parent=2238"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/categories?post=2238"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/tags?post=2238"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}