Uma fábrica de enchimento de sumos precisa de comprar novas máquinas para uma das fases finais da sua produção. Antes da compra, o concelho de administradores decidiu mandar desenvolver uma simulação para aferir o nível da produção. A simulação consiste no enunciado descrito na Visão Geral, tendo em conta as instruções, implementação, pontuação e penalizações descritas neste documento. Crie um programa que permita inserir caixas no tapete rolante circular, solicitando a informação sobre uma caixa ao utilizador e inseri-la no tapete rolante circular. A caixa deve ter a quantidade de garrafas, o sabor e outros atributos que sejam necessários.
Passo 1
Vamos resumir a questão: Uma fábrica de sumos precisa desenvolver um programa para simular a inserção de caixas em um tapete rolante circular. Cada caixa contém informações como a quantidade de garrafas, o sabor e outros atributos necessários. Para resolver esse problema, vamos precisar entender conceitos de estruturas de dados, especificamente filas circulares, e como interagir com o usuário para inserir dados no programa.
Passo 2
Primeiro, vamos entender o que é uma fila circular. Imagine um tapete rolante que volta ao início quando chega ao fim, formando um círculo. Em estruturas de dados, uma fila circular permite que o último elemento seja conectado ao primeiro, aproveitando melhor o espaço e evitando o desperdício de memória que pode ocorrer em filas lineares quando elementos são removidos.
Passo 3
Para implementar isso no nosso programa, precisamos definir como armazenaremos as caixas. Vamos criar uma estrutura chamada
Caixa
que armazenará a quantidade de garrafas, o sabor e outros atributos que considerarmos necessários. Em seguida, implementaremos a fila circular para gerenciar essas caixas.Passo 4
Vamos começar definindo a estrutura da
Caixa
. Em Python, por exemplo, podemos usar uma classe:class Caixa:
def __init__(self, quantidade, sabor, outros_atributos):
self.quantidade = quantidade
self.sabor = sabor
self.outros_atributos = outros_atributos
Passo 5
Agora, vamos implementar a fila circular. Precisamos definir o tamanho máximo da fila e métodos para inserir e remover caixas. Usaremos uma lista para armazenar as caixas e dois ponteiros,
frente
e tras
, para controlar onde inserir e remover elementos.class FilaCircular:
def __init__(self, tamanho):
self.tamanho = tamanho
self.fila = [None] * tamanho
self.frente = -1
self.tras = -1
def inserir(self, caixa):
if ((self.tras + 1) % self.tamanho == self.frente):
print("Fila está cheia! Não é possível inserir a caixa.")
return
if self.frente == -1:
self.frente = 0
self.tras = (self.tras + 1) % self.tamanho
self.fila[self.tras] = caixa
print(f"Caixa inserida: {caixa.sabor}, {caixa.quantidade} garrafas.")
def mostrar(self):
if self.frente == -1:
print("Fila está vazia!")
return
print("Caixas no tapete rolante:")
i = self.frente
while True:
caixa = self.fila[i]
print(f"Sabor: {caixa.sabor}, Quantidade: {caixa.quantidade}")
if i == self.tras:
break
i = (i + 1) % self.tamanho
Passo 6
Com a fila circular implementada, vamos criar uma interface simples para o usuário inserir dados das caixas. Vamos solicitar que o usuário informe a quantidade de garrafas, o sabor e outros atributos necessários, criar uma instância da
Caixa
e inserir na fila.def main():
tamanho_fila = int(input("Digite o tamanho do tapete rolante (número de caixas que pode conter): "))
fila = FilaCircular(tamanho_fila)
while True:
print("\nOpções:")
print("1. Inserir caixa")
print("2. Mostrar caixas")
print("3. Sair")
escolha = input("Escolha uma opção: ")
if escolha == '1':
quantidade = int(input("Digite a quantidade de garrafas: "))
sabor = input("Digite o sabor: ")
outros = input("Digite outros atributos (separados por vírgula): ")
caixa = Caixa(quantidade, sabor, outros)
fila.inserir(caixa)
elif escolha == '2':
fila.mostrar()
elif escolha == '3':
print("Encerrando o programa.")
break
else:
print("Opção inválida! Tente novamente.")
if __name__ == "__main__":
main()
Resposta
Pronto! Agora você tem um programa que simula a inserção de caixas em um tapete rolante circular. Ele permite que o usuário insira informações sobre cada caixa e armazene-as na fila circular, garantindo que o espaço seja utilizado de forma eficiente.