No plano cartesiano, um ponto é determinado pelo par ordenado (
). Sabendo que a distância euclidiana entre dois pontos é calculada como:
escreva um programa em C que calcula a distância entre dois pontos informados pelo usuário. Utilize tipos estruturados de dados.
Passo 1
O enunciado pede criar um programa em C que calcula a distância euclidiana entre dois pontos no plano cartesiano, usando tipos estruturados de dados (struct).
Passo 2
Definimos um tipo estruturado para representar um ponto no plano: uma struct com dois campos do tipo double, para as coordenadas x e y.
Implementamos uma função distance que recebe dois pontos do tipo Point e retorna a distância euclidiana, usando a fórmula .
Implementamos uma função distance que recebe dois pontos do tipo Point e retorna a distância euclidiana, usando a fórmula
Passo 3
No main, declaramos duas variáveis do tipo Point e usamos scanf para ler as coordenadas x e y de cada ponto informadas pelo usuário.
Chamamos a função distance com os dois pontos lidos, armazenamos o resultado em uma variável e usamos printf para mostrar a distância calculada ao usuário.
Chamamos a função distance com os dois pontos lidos, armazenamos o resultado em uma variável e usamos printf para mostrar a distância calculada ao usuário.
Resposta
#include <stdio.h>
#include <math.h>
#include <math.h>
typedef struct {
double x;
double y;
} Point;
double x;
double y;
} Point;
double distance(Point a, Point b) {
return sqrt((a.x - b.x) * (a.x - b.x) + (a.y - b.y) * (a.y - b.y));
}
return sqrt((a.x - b.x) * (a.x - b.x) + (a.y - b.y) * (a.y - b.y));
}
int main(void) {
Point p1, p2;
printf(“Digite as coordenadas do primeiro ponto (x y): “);
scanf(”%lf %lf”, &p1.x, &p1.y);
printf(“Digite as coordenadas do segundo ponto (x y): “);
scanf(”%lf %lf”, &p2.x, &p2.y);
Point p1, p2;
printf(“Digite as coordenadas do primeiro ponto (x y): “);
scanf(”%lf %lf”, &p1.x, &p1.y);
printf(“Digite as coordenadas do segundo ponto (x y): “);
scanf(”%lf %lf”, &p2.x, &p2.y);
double d = distance(p1, p2);
printf("Distância entre os pontos: %.4f\n", d);
return 0;
}