A entrada consiste em um inteiro
, representando o ponto cardeal do avião que entrou no campo da pista (-4 <=
), onde (-4 representa o lado leste, -3 o lado norte, -2 o lado sul e -1 o lado oeste). Em seguida, os respectivos aviões são inseridos, compostos por um identificador iniciado pela letra A seguido de um inteiro I (1 <= I <= 1000). A qualquer momento é permitido alterar o ponto cardeal, e inserir novas aeronaves, repetidamente até que o controlador encerre a sessão com o dígito 0 .
Passo 1
Beleza, vamos dar uma olhada no que a questão está pedindo. Temos um número inteiro $ P $ que representa o ponto cardeal de entrada de um avião na pista. Os valores de $ P $ vão de -4 a -1, onde:
-
representa o lado leste, -
representa o lado norte, -
representa o lado sul, -
representa o lado oeste.
Depois disso, aviões são inseridos com identificadores que começam com a letra A seguida de um número inteiro $ I $ (onde $ 1 \leq I \leq 1000 $). A qualquer momento, podemos mudar o ponto cardeal e inserir novos aviões, repetindo esse processo até que seja inserido o dígito 0, que encerra a sessão.
Para resolver essa questão, vamos precisar entender como processar entradas sequenciais, como interpretar os pontos cardeais e como gerenciar a inserção de aviões até que o sinal de encerramento seja recebido. Vamos usar conceitos básicos de programação, como loops e condicionais, para implementar essa lógica.
Passo 2
Primeiro, precisamos entender como representar os pontos cardeais numericamente. Vamos associar cada valor de $ P $ a uma direção específica:
Isso nos ajudará a interpretar o valor de $ P $ e saber para qual direção o avião está entrando na pista.
Passo 3
Agora, precisamos decidir como armazenar os aviões que são inseridos. Cada avião tem um identificador que começa com a letra A seguida de um número $ I $. Para facilitar, podemos armazenar esses identificadores em uma lista ou array.
Por exemplo, se inserirmos os aviões A1, A2 e A3, nossa lista ficará assim:
Passo 4
Precisamos implementar uma forma de alterar o ponto cardeal a qualquer momento. Isso significa que, durante a execução do nosso programa, podemos receber um novo valor para $ P $ que mudará a direção atual. Precisamos atualizar a direção atual sempre que um novo $ P $ for recebido.
Por exemplo, se começarmos com $ P = -4 $ (Leste) e depois recebermos $ P = -3 $ (Norte), a direção atual passa a ser Norte.
Passo 5
Devemos continuar inserindo aviões e alterando o ponto cardeal até que o controlador decida encerrar a sessão com o dígito 0. Isso sugere que usamos um loop que continua executando até que recebamos 0 como entrada.
Dentro desse loop, precisamos verificar o tipo de entrada:
- Se a entrada for um número entre -4 e -1, atualizamos o ponto cardeal.
- Se a entrada for um identificador de avião (começando com A), adicionamos esse avião à nossa lista.
Passo 6
Vamos resumir a lógica que implementaremos:
- Ler o valor inicial de $ P $ e definir a direção atual.
- Entrar em um loop que continuará executando até receber 0.
- Dentro do loop:
- Ler a próxima entrada.
- Se a entrada for 0, encerrar o loop.
- Se a entrada for um número entre -4 e -1, atualizar a direção atual.
- Se a entrada começar com A, adicionar o avião à lista.
- Após o loop, podemos exibir a lista de aviões inseridos e a direção final.
Passo 7
Vamos agora implementar isso em pseudocódigo para ter uma ideia de como seria:
ler P
direcao_atual = interpretar_P(P)
lista_avioes = []
enquanto True:
entrada = ler_proxima_entrada()
se entrada == "0":
quebrar
senao se entrada for um número entre -4 e -1:
direcao_atual = interpretar_P(entrada)
senao se entrada começa com "A":
lista_avioes.adicionar(entrada)
# Após o loop
imprimir("Direção final:", direcao_atual)
imprimir("Aviões inseridos:", lista_avioes)
Aqui,
interpretar_P
é uma função que mapeia o valor de $ P $ para a direção correspondente.Passo 8
Vamos detalhar a função
interpretar_P
para converter os valores de $ P $ em direções:Isso garante que sempre que inserirmos um valor para $ P $, teremos a direção correta associada.
Passo 9
Agora, vamos considerar como ler as entradas. Dependendo da forma como as entradas são fornecidas (linha por linha, por exemplo), precisamos de uma maneira de identificar se uma entrada é um número de ponto cardeal ou um identificador de avião.
Se a entrada começa com uma letra A, sabemos que é um avião. Caso contrário, é um número que representa o ponto cardeal.
Passo 10
Por último, vamos pensar no que fazer após encerrar a sessão. Podemos querer exibir todas as informações coletadas durante a sessão, como a direção final e a lista de aviões que foram inseridos.
Isso nos ajudará a verificar se o programa está funcionando corretamente e se está armazenando as informações como esperado.
Resposta
Seguindo esses passos, conseguimos criar um programa que:
- Inicializa com um ponto cardeal específico.
- Permite a inserção de aviões com identificadores únicos.
- Altera o ponto cardeal conforme necessário.
- Continua esse processo até que seja inserido o dígito 0 para encerrar a sessão.
No final, teremos a direção final do ponto cardeal e uma lista de todos os aviões que foram inseridos durante a sessão.
Por exemplo, se as entradas forem:
-4
A1
A2
-3
A3
0
A saída será:
Direção final: Norte
Aviões inseridos: [A1, A2, A3]
Isso mostra que começamos com a direção Leste, inserimos dois aviões, mudamos a direção para Norte, inserimos mais um avião e finalmente encerramos a sessão.