Ir ao conteúdo

Posts recomendados

Postado

E ai Pessoal

Eu fiz um programa simples que calcula a distancia 2 pontos quaisquer em um plano, o programa funcionou, mas estou com dúvida se a fórmula está correta, é a seguinte:

Program Distancia;
Uses Crt;
Var x, y, Resp:Real;
Begin
Clrscr;
Writeln('Digite o Primeiro Ponto:');
Readln(x);
Writeln('Digite o Segundo Ponto:');
Readln(y);
Resp:=Sqrt(x*2-x*1)*(x*2-x*1)+(y*2-y*1)*(y*2-y*1);
Readln;
End.

 

  • Curtir 1
Postado

Não tá legal, não.

Primeiro que um ponto no plano tem duas coordenadas (x e y). Se você está lendo dois pontos, tem que ler 4 valores, digamos x1, y1, x2, y2.

A fórmula que você usou está errada. Está fazendo a raiz quadrada só do primeiro termo, além de multiplicações erradas. Esses 1 e 2 que você está multiplicando são na verdade qualificações de x e y, para diferenciar qual é do ponto 1 e 2 (como citei acima).

Corrigindo para ler os 4 pontos, a fórmula ficaria:

Sqrt((x2-x1)*(x2-x1) + (y2-y1)*(y2-y1));

Ainda daria para você fazer a potenciação por função ao invés de forçar a multiplicação. Fica procê pesquisar :)

JP

  • Curtir 1
  • 11 anos depois...
Postado
Em 19/03/2008 às 09:53, fariajp disse:

Não tá legal, não.

Primeiro que um ponto no plano tem duas coordenadas (x e y). Se você está lendo dois pontos, tem que ler 4 valores, digamos x1, y1, x2, y2.

A fórmula que você usou está errada. Está fazendo a raiz quadrada só do primeiro termo, além de multiplicações erradas. Esses 1 e 2 que você está multiplicando são na verdade qualificações de x e y, para diferenciar qual é do ponto 1 e 2 (como citei acima).

Corrigindo para ler os 4 pontos, a fórmula ficaria:

Sqrt((x2-x1)*(x2-x1) + (y2-y1)*(y2-y1));

Ainda daria para você fazer a potenciação por função ao invés de forçar a multiplicação. Fica procê pesquisar :)

JP

mais esse calculo tem que ser com graus?

ou já em metros?

 

  • Curtir 1
Postado

@RodrigoSnarf  a menor distância entre dois pontos é uma linha reta, por exemplo

 

Y3vQUex.png

o cálculo acima do @fariajp  nada mais é do que o teorema pitagórico,  veja que independe do ângulo, pois, se os pontos não estiverem alinhado ao mesmo eixo, sempre será formado um triângulo retângulo.

 

 

  • Curtir 1
  • Membro VIP
Postado

@RodrigoSnarf, para facilitar o entendimento do que precisa ser feito, por favor, poste o enunciado completo da questão.

 

 

 

Para adiantar, seque alguns pontos:

Citando:

Em 19/03/2008 às 01:09, Anderson1986 disse:

writeln('Digite o Primeiro Ponto:');
readln(x);

 

Provavelmente o quê você está querendo são "as coordenadas do primeiro ponto". Daí, precisaria ver que tipo "plano cartesiano" está se referindo... poderia ser, por exemplo, bidimensional, ou poderia ser tridimensional etc (isso provavelmente está explicado no enunciado).

 

Daí, vamos supor que seja o mais comum: a bidimensional:

writeln('Digite as coordenadas do primeiro ponto: (separados por um espaço)');
readln(x1, y1);

É implícito que são 2 coordenadas... Fará o mesmo para o segundo ponto...

 

 

 

 

Já sobre:

3 horas atrás, RodrigoSnarf disse:

mais esse calculo tem que ser com graus?

ou já em metros?

 

Aí também entra a questão do que está sendo pedido no enunciado: ele quer a distância de um ponto a outro, ou a distância angular? distância em metro é uma coisa, distância em graus é outra completamente diferente... as duas coisas existirão, mas serão respostas para perguntas diferentes. Dá mesma forma, o mais provável é que esteja se referindo ao "tamanho da reta formada entre o ponto A e o ponto B" (ou seja: o tamanho dessa será uma distância entre os pontos).

 

Já em relação a unidade de medida, vai depender do que está definido no enunciado (que não temos). De um modo geral, poderia utilizar uma definição padrão, ex.:

writeln('A distância do ponto A para o ponto B é de ', distancia, "unidades de medidas"');

 

Se estiver em metros, será em metros. Se estiver em quilômetros, vai ser em quilômetros. Se for em anos-luz, vai ficar em anos-luz. Não importa a medida!

 

Resumindo:

O enunciado é cerne.

 

No aguardo.

  • Curtir 1
Postado
9 minutos atrás, Simon Viegas disse:

@RodrigoSnarf, para facilitar o entendimento do que precisa ser feito, por favor, poste o enunciado completo da questão.

 

 

 

Para adiantar, seque alguns pontos:

Citando:

 

Provavelmente o quê você está querendo são "as coordenadas do primeiro ponto". Daí, precisaria ver que tipo "plano cartesiano" está se referindo... poderia ser, por exemplo, bidimensional, ou poderia ser tridimensional etc (isso provavelmente está explicado no enunciado).

 

Daí, vamos supor que seja o mais comum: a bidimensional:


writeln('Digite as coordenadas do primeiro ponto: (separados por um espaço)');
readln(x1, y1);

É implícito que são 2 coordenadas... Fará o mesmo para o segundo ponto...

 

 

 

 

Já sobre:

 

Aí também entra a questão do que está sendo pedido no enunciado: ele quer a distância de um ponto a outro, ou a distância angular? distância em metro é uma coisa, distância em graus é outra completamente diferente... as duas coisas existirão, mas serão respostas para perguntas diferentes. Dá mesma forma, o mais provável é que esteja se referindo ao "tamanho da reta formada entre o ponto A e o ponto B" (ou seja: o tamanho dessa será uma distância entre os pontos).

 

Já em relação a unidade de medida, vai depender do que está definido no enunciado (que não temos). De um modo geral, poderia utilizar uma definição padrão, ex.:


writeln('A distância do ponto A para o ponto B é de ', distancia, "unidades de medidas"');

 

Se estiver em metros, será em metros. Se estiver em quilômetros, vai ser em quilômetros. Se for em anos-luz, vai ficar em anos-luz. Não importa a medida!

 

Resumindo:

O enunciado é cerne.

 

No aguardo.

Estou desenvolvendo um programa em visualg para trabalho na faculdade onde tenho q calcular a distância  entre 2 pontos em metros através das coordenadas inseridas, onde se a distância for maior que 20mts está em perigo se não distância ok.

  • Curtir 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...