Faça um programa computacional que pergunte ao usuário 10 nomes próprios (sem sobrenomes), em ordem alfabética. O programa deve ser capaz de encontrar um nome e retornar a posição dele na lista. Caso o nome não seja encontrado, o programa deve retornar -1. Considere para a solução:
Busca sequencial;
Busca sequencial;
Passo 1
O enunciado pede um programa que armazene
nomes próprios (sem sobrenomes) em ordem alfabética, depois solicite um nome qualquer e faça uma busca sequencial nessa lista. Se o nome for encontrado, o programa deve devolver seu índice na lista; caso contrário, deve devolver
. O conteúdo envolvido é: vetores (listas), entrada de dados, laço de repetição e busca sequencial (linear search).
Passo 2
Inicialize uma lista vazia para guardar os
nomes e use um laço que percorre
vezes, solicitando ao usuário que informe cada nome já em ordem alfabética. A cada iteração, leia a string e acrescente-a à lista.
Após ler os nomes, peça ao usuário o nome que deseja buscar. Armazene essa string em uma variável chamada, por exemplo,
.
Após ler os
Passo 3
Implemente a busca sequencial: percorra a lista com um laço (por exemplo,
com
) e compare cada elemento com
. Se encontrar igualdade, armazene o índice e interrompa o laço. Caso termine o laço sem achar, mantenha o valor inicial
.
Finalmente, exiba o valor do índice encontrado (ou se não foi encontrado). Esse valor corresponde à posição na lista (começando em zero).
Finalmente, exiba o valor do índice encontrado (ou
Resposta
# Leitura dos \(10\) nomes em ordem alfabética
nomes = []
for i in range(\(10\)):
nome = input(f"Informe o \({i+1}\)\textordfeminine\ nome (em ordem alfabética): ")
nomes.append(nome)
# Nome a ser buscado
alvo = input("Digite o nome a ser buscado: ")
# Busca sequencial (linear search)
posicao = -1
for idx, nome in enumerate(nomes):
if nome == alvo:
posicao = idx
break
# Saída do resultado
print(posicao)