"Tem livro que aparece como emprestado duas vezes e ninguem sabe com quem esta", reclamou uma voluntaria do…
Publicado por Alexandre Lombardi dos Santos, fundador do GeraProva
Construir soluções computacionais de problemas de diferentes áreas do conhecimento, de forma individual e colaborativa, selecionando as estruturas de dados e técnicas adequadas, aperfeiçoando e articulando saberes escolares.
Fonte: Base Nacional Comum Curricular (MEC).Questão
"Tem livro que aparece como emprestado duas vezes e ninguem sabe com quem esta", reclamou uma voluntaria do Ponto de Leitura do bairro. O acervo tem livros com um codigo curto colado na contracapa (ex.: L042). No atendimento, cada voluntario registra no tablet os codigos dos livros que saem. Nos dias de maior movimento, acontece de duas pessoas digitarem o mesmo codigo sem perceber. A lista de emprestimos fica com repeticoes e o sistema simples da biblioteca passa a achar que existem duas copias do mesmo livro fora do acervo, bloqueando novas reservas. O grupo decidiu refazer o programa para que: (1) cada codigo de livro emprestado apareca no registro no maximo uma vez; (2) seja rapido verificar se um codigo ja esta emprestado; (3) ao devolver, o codigo deixe de constar no registro. A ordem dos codigos nao importa. Com base no texto, identifique a estrutura de dados mais adequada para armazenar os codigos dos livros emprestados, evitando repeticoes e facilitando a verificacao de presenca.
- A) Usar uma tabela de codigos com linhas repetidas, somando quantas vezes o mesmo codigo foi digitado
- B) Usar um conjunto de codigos, que nao aceita duplicados e permite testar se um codigo esta presente
- C) Usar uma fila de codigos, enfileirando no emprestimo e desenfileirando na devolucao do livro
- D) Usar uma lista de codigos, mantendo a ordem de digitacao para descobrir se um codigo ja apareceu
- E) Usar uma pilha de codigos, empilhando no emprestimo e desempilhando no retorno do livro
✅ Resposta correta: alternativa B
Resolução passo a passo
- O problema exige três coisas: cada código aparece no máximo uma vez (sem repetições), verificar rapidamente se um código já está emprestado e remover o código na devolução. A ordem dos códigos não importa.
- Um conjunto (set) é a estrutura que não aceita elementos duplicados por definição. Assim, se o mesmo código for digitado duas vezes, ele continua aparecendo apenas uma vez, resolvendo o problema da lista com repetições.
- Conjuntos permitem testar a presença de um elemento de forma rápida, em tempo médio constante, por meio de tabela de dispersão (hash). Isso atende ao requisito de verificação rápida.
- Na devolução, basta remover o código do conjunto, o que também é uma operação direta. Portanto, a alternativa B atende aos três requisitos.
- Por que as outras estão erradas: A) uma tabela com linhas repetidas mantém duplicidades, justamente o problema que se quer eliminar; C) uma fila é voltada à ordem de chegada e não evita repetições nem facilita a busca por presença; D) uma lista permite duplicados e exige percorrê-la inteira para verificar presença, o que é lento; E) uma pilha só dá acesso ao topo, não serve para testar rapidamente se um código existe e também permite repetições.
- Conclusão: a estrutura mais adequada é o conjunto de códigos, alternativa B, que coincide com o gabarito oficial.
💡 Dica: Pense em estruturas que evitam duplicatas e facilitam buscas.
Alternativa por alternativa
O aluno pensa que registrar cada digitação em uma linha separada e contar as repetições resolve o problema, sem perceber que a exigência é que o código apareça no máximo uma vez.
Conjunto garante unicidade e permite checar rapidamente se um codigo ja foi registrado como emprestado.
O aluno associa o empréstimo e a devolução à ideia de fila (primeiro a entrar, primeiro a sair) e não considera que o problema exige evitar repetições e testar presença.
O aluno acredita que, por ser uma lista organizada pela ordem de digitação, ela já serve para evitar repetições, ignorando que a lista aceita duplicados e exige percorrê-la inteira para achar um código.
Por que engana: Confundir estruturas que permitem duplicatas com as que evitam, como listas ou filas.
O aluno imagina que a pilha, por guardar os itens em uma ordem de empilhar e desempilhar, resolve o controle de empréstimos, sem notar que ela só acessa o topo e não impede repetições.
Raio-X da questão
estrutura de dados conjunto
avaliacao
conceito de estrutura de dados · propriedades de conjuntos
estude estruturas de dados e propriedades de conjuntos
Confundir estruturas que permitem duplicatas com as que evitam, como listas ou filas.
tomada_decisao
cotidiano
Questões parecidas com resolução
- No sabado, a praca do bairro recebeu uma feira de troca de livros. Para evitar filas, Helena decidiu montar um programa…
- No centro comunitario do bairro, um grupo de jovens montou um sistema simples para registrar os arquivos enviados para a…
- Ao fim de cada tarde, uma oficina de robótica comunitária registra o uso de oito kits de ferramentas. Para organizar a…
- Ao implementar um algoritmo para gerenciar o acervo da biblioteca escolar, cada livro precisa armazenar título, autor…
- Uma biblioteca digital comunitária mantém uma sequência de livros recomendados para cada usuário. A sequência precisa…
- — Tia, onde fica o livro do Ziraldo? — perguntou uma criança na biblioteca do bairro. Para ajudar nas buscas…
🔎 Resolver outra questão
Cole o enunciado e veja a resolução passo a passo, a alternativa correta e por que as outras estão erradas.
Professor: monte a prova com questões como esta, com gabarito e folha de respostas, em 30 segundos. Ver planos · Blog
