Sendo fornecidos N números inteiros, onde N é informado inicialmente pelo usuário, elabore um algoritmo que armazene esses N números. Após isso, solicite ao usuário 5 números e verifique quais desses números constam dentre os N previamente armazenados. Para cada um que existir apresente a mensagem no seguinte formato: “Valor encontrado no vetor = 45!”. Caso contrário não apresente nenhuma mensagem.

Passo 1

O enunciado pede o seguinte: o usuário informa um número inteiro N. Em seguida devemos ler e armazenar N números inteiros (um vetor/array de tamanho N). Depois disso, devemos solicitar ao usuário exatamente 5 números (chamarei cada um de “consulta”) e, para cada consulta, verificar se esse número consta entre os N números previamente armazenados. Para cada consulta que existir no vetor devemos apresentar exatamente a mensagem no formato: “Valor encontrado no vetor = 45!” (onde 45 é um exemplo — na prática deve aparecer o valor da consulta que foi encontrado). Se a consulta não existir no vetor, não devemos imprimir nada para essa consulta. Informações relevantes extraídas do enunciado:
  • O usuário fornece N (um inteiro).
  • Devemos ler e armazenar N números inteiros.
  • Devemos ler exatamente 5 números-consulta.
  • Para cada consulta que estiver no vetor, imprimir a mensagem com o valor encontrado; caso contrário, não imprimir nada.

Passo 2

Escolha do método (explicada de forma simples e justa): a forma mais direta e segura de fazer isso na prova é usar um vetor para armazenar os N números e, para cada uma das 5 consultas, percorrer o vetor comparando elemento a elemento até encontrar o valor (ou acabar o vetor). Esse procedimento chama-se busca linear. Eu escolho a busca linear porque é a técnica mais básica, é fácil de implementar sem biblioteca e cabe bem num tempo curto de prova. Não precisa de estruturas avançadas nem de ordenar os dados.

Passo 3

O que é preciso saber para implementar isso (aula curta e prática)
  • Vetor/array: é uma sequência indexada de elementos. Vou usar índice começando em 1 para facilitar a notação em provas (pode usar 0 em linguagens, mas aqui escrevo conceitualmente A[1\ldots N]). Cada posição guarda um inteiro.
  • Laço (loop): usamos um laço para preencher o vetor e outro laço para testar cada consulta.
  • Comparação de inteiros: em cada posição do vetor comparamos igualdade entre o valor guardado e a consulta (operador “igual”).
  • Flag e break: ao encontrar uma correspondência é comum usar uma variável booleana (chamada de flag, por exemplo encontrou) para indicar que achamos o valor e então interromper o laço (usar “break” ou encerrar o laço) para não imprimir várias vezes quando o valor aparece mais de uma vez.

Passo 4

Explicação passo a passo da busca linear (como fazer na prova, bem mastigado)
  1. Ler N.
  2. Declarar um vetor A de tamanho N.
  3. Para i variando de 1 até N: ler A[i] e armazenar.
    • Aqui você está preenchendo o vetor posição a posição.
  4. Repetir o seguinte exatamente 5 vezes (para cada consulta):
    a) Ler a consulta (vou chamar de q).
    b) Inicializar uma variável booleana encontrou \leftarrow \text{falso}.
    c) Para i variando de 1 até N:
    • Se A[i] = q então:
      • imprimir: “Valor encontrado no vetor = q!” substituindo q pelo valor lido,
      • definir encontrou \leftarrow \text{verdadeiro},
      • interromper o laço (fazer break) para não procurar mais — já que só queremos imprimir uma vez por consulta.
        d) Se ao terminar o laço encontrou for falso, não faça nada (não imprimir).
  5. Fim.
Dica prática: usar o break assim que achar evita imprimir várias vezes no caso de existir mais de uma ocorrência do mesmo valor no vetor.

Passo 5

Por que isso funciona e custo (um toque teórico prático)
  • Correção: a busca linear verifica cada elemento do vetor; se algum for igual à consulta, encontramos e imprimimos conforme pedido. Se nenhum for igual, não imprimimos.
  • Complexidade: cada consulta faz, no pior caso, N comparações. Como temos 5 consultas, o pior caso é 5N comparações, que é O(N) em notação assintótica (o fator 5 é constante). Para a prova, isso significa que para N pequeno ou médio, esse método é totalmente aceitável.
  • Alternativas: ordenar o vetor e usar busca binária reduziria tempo para muitas consultas, mas é trabalho extra e não necessário aqui (além de ser mais sujeito a erros em prova rápida). Como são apenas 5 consultas, busca linear é a escolha certa.

Passo 6

Exemplo prático pequeno (para fixar)
  • Suponha N=6. Os 6 números lidos em ordem são: A[1]=10, A[2]=45, A[3]=7, A[4]=45, A[5]=2, A[6]=99.
  • Agora imaginemos as 5 consultas na ordem: q_1=45, q_2=3, q_3=2, q_4=99, q_5=45.
    Processo:
  • Para q_1=45: percorrendo A vemos A[2]=45 — imprimimos “Valor encontrado no vetor = 45!” e paramos a busca para essa consulta.
  • Para q_2=3: percorremos todo o vetor e não encontramos 3 — imprimimos nada.
  • Para q_3=2: encontramos em A[5] — imprimimos “Valor encontrado no vetor = 2!”.
  • Para q_4=99: encontramos em A[6] — imprimimos “Valor encontrado no vetor = 99!”.
  • Para q_5=45: novamente imprimimos “Valor encontrado no vetor = 45!” (mesmo que já tenhamos impresso antes — cada consulta é tratada separadamente).

Passo 7

Dicas finais de implementação na prova (práxis)
  • Use nomes simples: A para o vetor, N para tamanho, q para consulta, encontrou como flag.
  • Ao imprimir, formate exatamente: Valor encontrado no vetor = <valor>! (lembre-se do ponto de exclamação final).
  • Evite imprimir mensagens extras (prompts, textos explicativos), pois enunciado disse que somente imprimir quando encontrar; nas provas de programação isso costuma ser cobrado.
  • Se implementar em linguagem que começa índices em 0 (ex.: C, Python), converta mentalmente o laço, mas logicamente a ideia é a mesma.

Resposta

leia N
declare vetor A[1\ldots N]
para i \leftarrow 1 até N faça
\quad leia A[i]
fim para
para c \leftarrow 1 até 5 faça
\quad leia q
\quad encontrou \leftarrow \text{falso}
\quad para i \leftarrow 1 até N faça
\quad\quad se A[i] = q então
\quad\quad\quad imprima "Valor encontrado no vetor = " + q + “!”
\quad\quad\quad encontrou \leftarrow \text{verdadeiro}
\quad\quad\quad pare (break) do laço interno
\quad\quad fim se
\quad fim para
\quad /* se encontrou for falso, não imprimir nada */
fim para

Exercícios relacionados