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.

Exercícios relacionados