{"id":789,"date":"2019-06-26T11:43:09","date_gmt":"2019-06-26T14:43:09","guid":{"rendered":"http:\/\/www.galirows.com.br\/meublog\/programacao\/?p=789"},"modified":"2021-06-18T11:05:44","modified_gmt":"2021-06-18T14:05:44","slug":"distancia-entre-dois-pontos","status":"publish","type":"post","link":"http:\/\/www.galirows.com.br\/meublog\/programacao\/distancia-entre-dois-pontos\/","title":{"rendered":"Dist\u00e2ncia entre dois pontos"},"content":{"rendered":"\n<p>Criar uma fun\u00e7\u00e3o que receba  as coordenadas de dois pontos (A e B) e retorna dist\u00e2ncia entre esses  dois pontos. O algoritmo deve ler as coordenadas X e Y de cada um dos  pontos e mostrar essa  dist\u00e2ncia.<\/p>\n\n\n\n<p><strong>Solu\u00e7\u00e3o sem criar uma fun\u00e7\u00e3o<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"c\" class=\"language-c\">#include &lt;stdio.h&gt;\n#include &lt;math.h&gt;\n\nint main()\n{\n    int x1,x2,y1,y2;\n    float distancia;\n    scanf(\"%i %i %i %i\", &amp;x1, &amp;y1, &amp;x2, &amp;y2);\n\n    distancia = sqrt( pow(x2-x1, 2) + pow(y2-y1, 2) );\n\n    printf(\"%f\", distancia);\n    return 0;\n}<\/code><\/pre>\n\n\n\n<p><strong>Solu\u00e7\u00e3o elaborando uma fun\u00e7\u00e3o<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"c\" class=\"language-c\">#include &lt;stdio.h&gt;\n#include &lt;math.h&gt;\n\nfloat calculaDistancia(int x1, int y1, int x2, int y2) {\n    return sqrt( pow(x2-x1,2) + pow(y2-y1, 2) );\n}\n\nint main() {\n    int x1,y1,x2,y2;\n    float distancia;\n\n    printf(\"Informe as coordenadas para o primeiro ponto: \");\n    scanf(\"%i %i\", &amp;x1, &amp;y1);\n    printf(\"Informe as coordenadas para o segundo ponto: \");\n    scanf(\"%i %i\", &amp;x2, &amp;y2);\n\n    distancia = calculaDistancia(x1,y1,x2,y2);\n\n    printf(\"Distancia: %f\", distancia);\n}<\/code><\/pre>\n\n\n\n<p>Eu j\u00e1 tinha codificado uma solu\u00e7\u00e3o semelhante em Python e apresentei em  <a href=\"http:\/\/www.galirows.com.br\/meublog\/programacao\/exercicios-resolvidos-em-python-2\/\">http:\/\/www.galirows.com.br\/meublog\/programacao\/exercicios-resolvidos-em-python-2\/<\/a>, Existia uma pequena diferen\u00e7a no exerc\u00edcio e vou aproveitar ela para uma considera\u00e7\u00e3o.  <\/p>\n\n\n\n<p> A diferen\u00e7a estava em que o enunciado pedia que: <strong>se a dist\u00e2ncia for maior do que zero, deve ser mostrada essa dist\u00e2ncia, caso contr\u00e1rio deve ser solicitado outras coordenadas.<\/strong>  \u00c9 uma quest\u00e3o simples e o c\u00f3digo que propus inicialmente era o seguinte.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"c\" class=\"language-c\">#include &lt;stdio.h&gt;\n#include &lt;math.h&gt;\n\nfloat calculaDistancia(int x1, int y1, int x2, int y2) {\n    return sqrt( pow(x2-x1, 2) + pow(y2-y1, 2) );\n}\n\nint main()\n{\n    int x1,x2,y1,y2;\n    float distancia;\n\n    distancia = 0;\n    while (distancia == 0) {\n        scanf(\"%i %i %i %i\", &amp;x1, &amp;y1, &amp;x2, &amp;y2);\n        distancia = calculaDistancia(x1,y1,x2,y2);\n    }\n    printf(\"%f\", distancia);\n    return 0;\n}<\/code><\/pre>\n\n\n\n<p>A solu\u00e7\u00e3o seria melhor utilizando um bloco <strong>do&#8230;while<\/strong>. Isso porque eu preciso necessariamente fazer o bloco pelo menos uma vez. Usando simplesmente o <strong>while <\/strong>eu tive que for\u00e7ar passar no teste pela primeira vez, inicializando a vari\u00e1vel <em>distancia <\/em>com zero.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"c\" class=\"language-c\">    do {\n        scanf(\"%i %i %i %i\", &amp;x1, &amp;y1, &amp;x2, &amp;y2);\n        distancia = calculaDistancia(x1,y1,x2,y2);\n    } while (distancia == 0);<\/code><\/pre>\n\n\n\n<p>Mas o que eu queria realmente fazer era uma considera\u00e7\u00e3o quanto a efici\u00eancia computacional. Na solu\u00e7\u00e3o apresentada eu calculei a dist\u00e2ncia entre os pontos para constatar que ela \u00e9 zero. Para isso todo o c\u00e1lculo da equa\u00e7\u00e3o da dist\u00e2ncia entre os dois pontos foi feita. Mas apenas quando os pontos forem iguais \u00e9 que a dist\u00e2ncia ser\u00e1 zero e fazer esse teste (verificar se x1 e x2, y1 e y2 s\u00e3o iguais) \u00e9 mais eficiente computacionalmente e seria melhor para a solu\u00e7\u00e3o, com o mesmo resultado.<\/p>\n\n\n\n<p>Confira o v\u00eddeo em:  <a rel=\"noreferrer noopener\" target=\"_blank\" href=\"https:\/\/youtu.be\/NmL8wtsxmuk\">https:\/\/youtu.be\/NmL8wtsxmuk<\/a> <\/p>\n","protected":false},"excerpt":{"rendered":"<p>Criar uma fun\u00e7\u00e3o que receba as coordenadas de dois pontos (A e B) e retorna dist\u00e2ncia entre esses dois pontos. O algoritmo deve ler as coordenadas X e Y de cada um dos pontos e mostrar essa dist\u00e2ncia. Solu\u00e7\u00e3o sem criar uma fun\u00e7\u00e3o Solu\u00e7\u00e3o elaborando uma fun\u00e7\u00e3o Eu j\u00e1 tinha codificado uma solu\u00e7\u00e3o semelhante em [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[3,4],"tags":[60,12,56,35],"class_list":["post-789","post","type-post","status-publish","format-standard","hentry","category-c","category-videos","tag-exercicio-resolvido","tag-funcao","tag-geometria","tag-while"],"aioseo_notices":[],"amp_enabled":true,"_links":{"self":[{"href":"http:\/\/www.galirows.com.br\/meublog\/programacao\/wp-json\/wp\/v2\/posts\/789","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.galirows.com.br\/meublog\/programacao\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.galirows.com.br\/meublog\/programacao\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.galirows.com.br\/meublog\/programacao\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.galirows.com.br\/meublog\/programacao\/wp-json\/wp\/v2\/comments?post=789"}],"version-history":[{"count":5,"href":"http:\/\/www.galirows.com.br\/meublog\/programacao\/wp-json\/wp\/v2\/posts\/789\/revisions"}],"predecessor-version":[{"id":1038,"href":"http:\/\/www.galirows.com.br\/meublog\/programacao\/wp-json\/wp\/v2\/posts\/789\/revisions\/1038"}],"wp:attachment":[{"href":"http:\/\/www.galirows.com.br\/meublog\/programacao\/wp-json\/wp\/v2\/media?parent=789"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.galirows.com.br\/meublog\/programacao\/wp-json\/wp\/v2\/categories?post=789"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.galirows.com.br\/meublog\/programacao\/wp-json\/wp\/v2\/tags?post=789"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}