{"id":1582,"date":"2015-01-01T05:05:11","date_gmt":"2015-01-01T10:05:11","guid":{"rendered":"http:\/\/blog.espol.edu.ec\/icm00794\/?p=1582"},"modified":"2026-04-05T17:38:07","modified_gmt":"2026-04-05T22:38:07","slug":"s1eva2014tii_t2-triangulos-en-rectangulo","status":"publish","type":"post","link":"https:\/\/blog.espol.edu.ec\/algoritmos101\/fp-s1eva20\/s1eva2014tii_t2-triangulos-en-rectangulo\/","title":{"rendered":"s1Eva2014TII_T2 Tri\u00e1ngulos aleatorios en rect\u00e1ngulo"},"content":{"rendered":"\n<p><em><strong>Ejercicios<\/strong><\/em>: <a href=\"https:\/\/blog.espol.edu.ec\/algoritmos101\/fp-1eva20\/1eva2014tii_t2-triangulos-aleatorios-en-rectangulo\/\" data-type=\"post\" data-id=\"3279\">1Eva2014TII_T2 Tri\u00e1ngulos aleatorios en rect\u00e1ngulo<\/a><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<div class=\"wp-block-group has-medium-font-size is-layout-flex wp-block-group-is-layout-flex\">\n<p><a href=\"#algoritmo\">algoritmo<\/a><\/p>\n\n\n\n<p><a href=\"#diagramaflujo\">diagrama flujo<\/a><\/p>\n<\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<figure class=\"wp-block-image alignright size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"261\" height=\"191\" src=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2015\/01\/triangulosAleatoriosRectangulo01.png\" alt=\"tri\u00e1ngulos Aleatorios en Rectangulo\" class=\"wp-image-16538\" \/><\/figure>\n\n\n\n<p>Para iniciar el ejercicio, se requiere la cantidad <strong>n<\/strong> de tri\u00e1ngulos a generar y los l\u00edmites del plano donde se generan [<strong>maxa<\/strong>,<strong>maxb<\/strong>] .<\/p>\n\n\n\n<p>Para cada tri\u00e1ngulo se generan las coordenadas de los v\u00e9rtices (xi,yi), usando n\u00fameros aleatorios ajustados a los l\u00edmites del plano.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>    <span style=\"color: #ff0000\"># puntos aleatorios<\/span>\n    x1 = <span style=\"color: #ff00ff\">int<\/span>(rnd.random()*maxa) +0\n    y1 = <span style=\"color: #ff00ff\">int<\/span>(rnd.random()*maxb) +0\n    \n    x2 = <span style=\"color: #ff00ff\">int<\/span>(rnd.random()*maxa) +0\n    y2 = <span style=\"color: #ff00ff\">int<\/span>(rnd.random()*maxb) +0\n\n    x3 = <span style=\"color: #ff00ff\">int<\/span>(rnd.random()*maxa) +0\n    y3 = <span style=\"color: #ff00ff\">int<\/span>(rnd.random()*maxb) +0<\/code><\/pre>\n\n\n\n<p>Lo m\u00e1s importante para este ejercicio es determinar las distancias entre los v\u00e9rtices, pues con ellas se determina el tipo de tri\u00e1ngulo, siguiendo las reglas b\u00e1sicas de la geometr\u00eda.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>    <span style=\"color: #ff0000\"># distancias entre puntos<\/span>\n    a = np.sqrt((x2-x1)**2 + (y2-y1)**2)\n    b = np.sqrt((x3-x2)**2 + (y3-y2)**2)\n    c = np.sqrt((x1-x3)**2 + (y1-y3)**2)<\/code><\/pre>\n\n\n\n<p>Puede darse el caso que los puntos se encuentren en una sola l\u00ednea en el plano, el caso se verifica al revisar si la suma de la longitud de dos lados es la longitud del tercer lado. Comprobar en todas las combinaciones \u00e9sta situaci\u00f3n.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<div class=\"wp-block-group has-medium-font-size is-layout-flex wp-block-group-is-layout-flex\">\n<p id=\"algoritmo\"><a href=\"#algoritmo\">algoritmo<\/a><\/p>\n\n\n\n<p><a href=\"#diagramaflujo\">diagrama flujo<\/a><\/p>\n<\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"algoritmo\">Algoritmo en Python<\/h2>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: python; title: ; notranslate\" title=\"\">\n# ICM00794-Fundamentos de Computaci\u00f3n - FCNM-ESPOL\n# 1Eva_IIT2014_T2 Tri\u00e1ngulos aleatorios en rect\u00e1ngulo\n# Propuesta de soluci\u00f3n: edelros@espol.edu.ec\n\nimport numpy as np\nimport random as rnd\nimport matplotlib.pyplot as plt\n\n# INGRESO\nn = int(input(&quot; cu\u00e1ntos tri\u00e1ngulos: &quot;))\nmaxa = int(input(&quot; rango lado a: &quot;))\nmaxb = int(input(&quot; rango lado b: &quot;))\n\n# PROCEDIMIENTO\nequilatero = 0\nisosceles  = 0\nescaleno   = 0\ncolineal   = 0\n\ni = 1\nwhile (i&lt;=n):\n    \n    # puntos aleatorios\n    x1 = int(rnd.random()*maxa) +0\n    y1 = int(rnd.random()*maxb) +0\n    \n    x2 = int(rnd.random()*maxa) +0\n    y2 = int(rnd.random()*maxb) +0\n\n    x3 = int(rnd.random()*maxa) +0\n    y3 = int(rnd.random()*maxb) +0\n\n    # distancias entre puntos\n    a = np.sqrt((x2-x1)**2 + (y2-y1)**2)\n    b = np.sqrt((x3-x2)**2 + (y3-y2)**2)\n    c = np.sqrt((x1-x3)**2 + (y1-y3)**2)\n\n    # realiza la gr\u00e1fica de cada tri\u00e1ngulo\n    plt.plot(&#x5B;x1, x2], &#x5B;y1, y2])\n    plt.plot(&#x5B;x2, x3], &#x5B;y2, y3])\n    plt.plot(&#x5B;x1, x3], &#x5B;y1, y3])\n\n    # clasifica tri\u00e1ngulos\n    s1 = a + b\n    s2 = b + c\n    s3 = c + a\n    if (s1==c or s2==a or s3==b):\n        colineal = colineal + 1\n    else:\n        if (a==b and b==c):\n            equilatero = equilatero+1\n        else:\n            if (a!=b and b!=c and c!=a):\n                escaleno = escaleno+1\n            else:\n                isosceles = isosceles+1\n    i=i+1\n\n# SALIDA\nprint(&quot;equilateros: &quot;)\nprint(equilatero)\nprint(&quot;escalenos: &quot;)\nprint(escaleno)\nprint(&quot;isosceles: &quot;)\nprint(isosceles)\nprint(&quot;colineales: &quot;)\nprint(colineal)\n\n# muestra la gr\u00e1fica\nplt.show()\n<\/pre><\/div>\n\n\n<p>Resultado del algoritmo<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code> cu\u00e1ntos tri\u00e1ngulos: 100\n rango lado a: 10\n rango lado b: 10\nequilateros: \n0\nescalenos: \n90\nisosceles: \n4\ncolineales: \n6\n&gt;&gt;&gt;\n cu\u00e1ntos tri\u00e1ngulos: 100\n rango lado a: 10\n rango lado b: 10\nequilateros: \n0\nescalenos: \n87\nisosceles: \n6\ncolineales: \n7\n&gt;&gt;&gt; <\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<div class=\"wp-block-group has-medium-font-size is-layout-flex wp-block-group-is-layout-flex\">\n<p><a href=\"#algoritmo\">algoritmo<\/a><\/p>\n\n\n\n<p><a href=\"#diagramaflujo\">diagrama flujo<\/a><\/p>\n<\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"diagramaflujo\">Diagrama de Flujo<\/h2>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"170\" height=\"372\" src=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2015\/01\/diagramaTrianguloAleatorio01.png\" alt=\"diagrama Tri\u00e1ngulo Aleatorio 01 \" class=\"wp-image-19396\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"356\" height=\"977\" src=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2015\/01\/diagramaTrianguloAleatorio02.png\" alt=\"diagrama Tri\u00e1ngulo Aleatorio 02\" class=\"wp-image-19397\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"158\" height=\"221\" src=\"http:\/\/blog.espol.edu.ec\/algoritmos101\/files\/2015\/01\/diagramaTrianguloAleatorio03.png\" alt=\"diagrama Tri\u00e1ngulo Aleatorio 03\" class=\"wp-image-19398\" \/><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<div class=\"wp-block-group has-medium-font-size is-layout-flex wp-block-group-is-layout-flex\">\n<p><a href=\"#algoritmo\">algoritmo<\/a><\/p>\n\n\n\n<p><a href=\"#diagramaflujo\">diagrama flujo<\/a><\/p>\n<\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n","protected":false},"excerpt":{"rendered":"<p>Ejercicios: 1Eva2014TII_T2 Tri\u00e1ngulos aleatorios en rect\u00e1ngulo algoritmo diagrama flujo Para iniciar el ejercicio, se requiere la cantidad n de tri\u00e1ngulos a generar y los l\u00edmites del plano donde se generan [maxa,maxb] . Para cada tri\u00e1ngulo se generan las coordenadas de los v\u00e9rtices (xi,yi), usando n\u00fameros aleatorios ajustados a los l\u00edmites del plano. Lo m\u00e1s importante [&hellip;]<\/p>\n","protected":false},"author":8043,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"wp-custom-template-entrada-fp-ejemplos","format":"standard","meta":{"footnotes":""},"categories":[130],"tags":[58,157],"class_list":["post-1582","post","type-post","status-publish","format-standard","hentry","category-fp-s1eva20","tag-ejemplos-python","tag-fundamentos-programacion"],"_links":{"self":[{"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/1582","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/users\/8043"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/comments?post=1582"}],"version-history":[{"count":4,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/1582\/revisions"}],"predecessor-version":[{"id":23614,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/posts\/1582\/revisions\/23614"}],"wp:attachment":[{"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/media?parent=1582"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/categories?post=1582"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/algoritmos101\/wp-json\/wp\/v2\/tags?post=1582"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}