A distância entre várias cidades é dada pela tabela abaixo (em km):
1 | 2 | 3 | 4 | 5 | |
---|---|---|---|---|---|
00 | 15 | 30 | 05 | 12 | |
2 | 15 | 00 | 10 | 17 | 28 |
3 | 30 | 10 | 00 | 03 | 11 |
4 | 05 | 17 | 03 | 00 | 80 |
5 | 12 | 28 | 11 | 80 | 00 |
Construa um programa que leia a tabela acima e informe ao usuário a distância entre duas cidades por ele requisitadas, até que ele entre com o código 0 para ambas as cidades;
Passo 1
O enunciado pede um programinha que leia uma tabela de distâncias (uma matriz 5×5) entre cidades e, a cada solicitação do usuário (dois códigos de cidade), informe a distância correspondente, repetindo até que o usuário digite 0 para ambas as cidades.
Conteúdo da matéria:
Conteúdo da matéria:
- Estruturas de dados (matriz/array bidimensional)
- Laços de repetição (while)
- Comandos de entrada/saída e condicionais (if)
O que vamos precisar: - Representar a tabela como uma matriz
onde é a distância da cidade para a cidade . - Um laço que leia pares de códigos até ambos serem zero.
Passo 2
Primeiro, montamos a matriz de distâncias. Em código (por exemplo Python), a gente pode fazer assim:
D = [
[ 0, 15, 30, 5, 12],
[15, 0, 10, 17, 28],
[30, 10, 0, 3, 11],
[ 5, 17, 3, 0, 80],
[12, 28, 11, 80, 0]
]
Aqui,
é acessado por
D[i-1][j-1]
porque índices em Python começam em 0.Passo 3
Agora a lógica do laço:
- A gente pede ao usuário dois números inteiros
c1
ec2
. - Se
c1 == 0
ec2 == 0
, sai do laço (break
). - Senão, checa se
1 ≤ c1, c2 ≤ 5
.- Se válido, exibe
D[c1-1][c2-1]
. - Se inválido, mostra uma mensagem de “código inválido”.
- Se válido, exibe
- Volta pro passo 1 do laço.
Teoria aplicada:
- Laço
while
para repetir até condição de parada. - Índices de matriz: para acessar
, usamos D[i-1][j-1]
em linguagens que começam em 0. - Condicional
if
para verificar terminação e validade de código.
Passo 4
Montagem final do programa (exibindo prompts e resultados). A cada iteração:
- Leitura dos códigos
- Checagem de término
- Validação de intervalo
- Impressão da distância ou mensagem de erro
Resposta
# Matriz de distâncias
D = [
[ 0, 15, 30, 5, 12],
[15, 0, 10, 17, 28],
[30, 10, 0, 3, 11],
[ 5, 17, 3, 0, 80],
[12, 28, 11, 80, 0]
]
while True:
c1 = int(input("Digite o código da primeira cidade (0 para sair): "))
c2 = int(input("Digite o código da segunda cidade (0 para sair): "))
# condição de parada
if c1 == 0 and c2 == 0:
print("Encerrando o programa. Valeu!")
break
# validação de índices
if 1 <= c1 <= 5 and 1 <= c2 <= 5:
dist = D[c1-1][c2-1] # acessa D_{c1,c2}
print(f"Distância entre {c1} e {c2}: {dist} km")
else:
print("Código inválido! Use valores entre 1 e 5.")