Na porta de um centro comunitário, voluntários recebem pedidos de doação e querem reduzir erros na hora de…
Publicado por Alexandre Lombardi dos Santos, fundador do GeraProva
Descrever com precisão a solução de um problema, construindo o programa que implementa a solução descrita.
Fonte: Base Nacional Comum Curricular (MEC).Questão
Na porta de um centro comunitário, voluntários recebem pedidos de doação e querem reduzir erros na hora de separar e entregar as sacolas. Cada pedido chega como uma linha de texto no celular, no formato: BAIRRO;FAMILIA;ITEM. A mesma família pode enviar mais de um item em linhas diferentes, e vários pedidos do mesmo bairro chegam misturados ao longo do dia. Para organizar a entrega, eles combinaram duas saídas do programa: (1) um roteiro por bairro, listando as famílias daquele bairro e os itens pedidos por cada uma; (2) uma lista de separação por bairro, com a contagem de quantas unidades de cada item devem ser colocadas no carro antes de sair. Eles pediram que o programa não “apague” pedidos repetidos e só gere o roteiro depois de ler todas as linhas recebidas. Analise o texto e identifique a decomposição de etapas que permite programar as duas saídas (roteiro e separação) por bairro, mantendo todos os pedidos registrados.
- A) Ler todas as linhas e guardar um único registro por família, substituindo o anterior quando chegar um novo pedido.
- B) Ler todas as linhas e agrupar primeiro por item, juntando depois os bairros para formar o roteiro de entrega.
- C) Ler todas as linhas, agrupar por bairro, reunir itens por família e contar itens por bairro para gerar as duas saídas.
- D) Ler todas as linhas, calcular a contagem total de itens do dia e depois dividir igualmente essa contagem entre os bairros.
- E) Ler uma linha e já imprimir o bairro, a família e o item, repetindo isso até acabarem as mensagens.
✅ Resposta correta: alternativa C
Resolução passo a passo
- Leia o enunciado e identifique o que o programa precisa produzir: duas saídas por bairro, um roteiro (famílias e itens de cada família) e uma lista de separação (contagem de unidades por item), sem apagar pedidos repetidos e só gerar as saídas depois de ler todas as linhas.
- Organize a sequência de etapas necessária. Primeiro, ler todas as linhas recebidas, pois os pedidos chegam misturados e o roteiro só pode ser gerado depois da leitura completa.
- Agrupar os pedidos por bairro, separando o conjunto de cada localidade, já que as duas saídas são feitas bairro a bairro.
- Dentro de cada bairro, reunir os itens por família, mantendo cada pedido registrado (inclusive quando a mesma família aparece em várias linhas). Esse agrupamento alimenta o roteiro.
- Dentro de cada bairro, contar quantas unidades de cada item foram pedidas, o que alimenta a lista de separação.
- Com esses dados, gerar as duas saídas. A alternativa C é a única que contém essa sequência completa e correta.
- Por que as outras estão erradas: A apaga pedidos anteriores da mesma família, contrariando o pedido de não apagar registros. B agrupa por item antes do bairro, o que dificulta montar o roteiro por família e por bairro. D calcula um total geral e divide igualmente, o que não reflete a demanda real de cada bairro. E imprime linha a linha sem ler tudo antes e sem agrupar ou contar, o que impede gerar as saídas pedidas.
💡 Dica: Identifique como agrupar e contar os dados para gerar as saídas solicitadas.
Alternativa por alternativa
Acredita que basta manter um único registro por família, substituindo o anterior, o que elimina pedidos repetidos da mesma família e desrespeita a exigência de não apagar pedidos.
Por que engana: Confundir agrupamento por bairro com agrupamento por item ou substituir registros ao invés de acumular.
Imagina que agrupar primeiro por item e depois juntar os bairros resolve o roteiro, sem perceber que o roteiro precisa das famílias agrupadas dentro de cada bairro.
Decomposição adequada: primeiro coleta, depois organiza por bairro, mantém itens por família e calcula contagens por bairro antes de imprimir.
Entende que a contagem total do dia deve ser dividida igualmente entre os bairros, ignorando que cada bairro tem seus próprios pedidos e que as saídas são feitas por bairro.
Supõe que processar cada linha separadamente e imprimir logo em seguida atende ao pedido, sem perceber que é preciso ler todas as linhas antes e agrupar ou contar os dados.
Raio-X da questão
agrupamento e contagem dados
diagnostico
estrutura de dados básica · agrupamento e contagem
estude estruturas de dados e agrupamento por chave
Confundir agrupamento por bairro com agrupamento por item ou substituir registros ao invés de acumular.
pensamento_critico
cotidiano
Questões parecidas com resolução
- Pesquisadores acompanham há três anos o avanço de resíduos flutuantes em um trecho de rio urbano. Em uma simulação para…
- — O caminhão não pode ir a uma rua em dia errado — explicou a agente de limpeza durante a reunião do bairro. O município…
- — Nem toda travessia precisa emitir som ao mesmo tempo — explicou a técnica responsável pelos sinais acessíveis da…
- Em pseudocódigo, para um loop 'enquanto' que percorre índices i iniciando em 1 para acessar lista[1..n], qual condição…
- Projete em pseudocódigo um algoritmo que valide a força de uma senha recebida como dado: a senha deve ter pelo menos 8…
- Projete um algoritmo em pseudocódigo, usando seleção condicional, que determine se um usuário pode editar um documento…
🔎 Procurar outra questão
Procure no banco do GeraProva pelo tema ou por um trecho do enunciado. Cada questão já vem com resolução comentada e a análise de cada alternativa.
Professor: monte a prova com questões como esta, com gabarito e folha de respostas, em 30 segundos. Ver planos · Blog
