Escreva um programa que leia as coordenadas de
pontos do plano cartesiano e que exiba as distâncias mínima, máxima e média entre esses pontos. O programa deve representar os pontos como uma lista de tuplas e deve adotar a distância euclidiana para aferir a distância dentre dois pontos.
Passo 1
Beleza, o exercício pede pra escrever um programa que, dado um conjunto de N pontos no plano (cada ponto é uma tupla (x,y)), calcule:
- a menor distância entre quaisquer dois desses pontos,
- a maior distância,
- a distância média.
Conteúdo envolvido:
- Representação de pontos como lista de tuplas.
- Fórmula da distância euclidiana entre dois pontos:
- Percorrer todas as combinações de pares de pontos (combinação, porque a distância A→B é a mesma B→A).
- Manter um acumulador de somas, contador de pares, e variáveis para mínimo e máximo.
Passo 2
Primeiro a gente lê N, depois lê N pares (x,y) e monta uma lista
pontos = [(x1,y1), (x2,y2), …]
. Em Python, por exemplo:N = int(input())
pontos = []
for _ in range(N):
x, y = map(float, input().split())
pontos.append((x, y))
Passo 3
Agora precisamos percorrer todos os pares distintos de índices i < j. Usamos dois laços aninhados:
import math
min_dist = float('inf')
max_dist = 0.0
soma_dist = 0.0
cont = 0
for i in range(N):
for j in range(i+1, N):
x1, y1 = pontos[i]
x2, y2 = pontos[j]
# fórmula da distância euclidiana:
d = math.sqrt((x2 - x1)**2 + (y2 - y1)**2)
# atualiza mínimo e máximo:
if d < min_dist:
min_dist = d
if d > max_dist:
max_dist = d
# acumula para média:
soma_dist += d
cont += 1
Passo 4
Depois de sair dos laços, .
A distância média é simplesmente
cont
vai ser o número total de pares, que é
A distância média é simplesmente
Então fazemos:
media_dist = soma_dist / cont # cont nunca será zero se N>=2
Passo 5
Por fim, a gente exibe os resultados (formatando como quiser, com 2 casas decimais, por exemplo):
print(f"Menor distância: {min_dist:.2f}")
print(f"Maior distância: {max_dist:.2f}")
print(f"Distância média: {media_dist:.2f}")
Resposta
O programa acima lê N pontos, calcula todas as distâncias
entre pares, e retorna:
- min_dist = menor distância encontrada,
- max_dist = maior distância encontrada,
- media_dist = soma de todas as distâncias dividida por
.