Filas estáticas | Questões Resolvidas de Linguagem C

Filas estáticas | Questões Resolvidas de Linguagem C

·

5 min read

1.1 – Filas estáticas

Crie um programa para simular uma fila usando um vetor estático. Para isso, resolva os seguintes problemas:

a) Declare um vetor de 10 posições (inteiros)

b) Crie uma função “push” que recebe um inteiro e “empurra” um número para o final da nossa fila. Quando a fila estiver cheia envie um aviso ao usuário.

c) Crie uma função “pop” que remove o primeiro elemento da fila e reposiciona todos os elementos de modo que sempre as ultimas posições estejam vazias. Nessa função, quando a fila estiver vazia, envie uma mensagem ao usuário “A fila está vazia”.

d) Crie uma função que imprime sua fila na tela

e) Crie uma função de busca em que o usuário insere um valor e mostra na tela a posição em que esse elemento se encontra.

___________________________________________________________

Situação no mundo da moda: Organização dos bastidores de um desfile

Traje Luxuoso: A Evolução Histórica da Moda

Em um desfile de moda importante, a equipe de bastidores precisa lidar com uma série de tarefas para garantir que tudo ocorra perfeitamente. Uma dessas tarefas envolve a organização das peças de roupa que serão usadas pelos modelos.

Nesse contexto, é possível utilizar uma fila para facilitar a gestão das roupas. Cada posição da fila representa um cabide, onde uma peça de roupa pode ser pendurada. Vamos explorar como as funções descritas se encaixam nessa situação:

a) Declaração do vetor de 10 posições:

int fila[10];

b) Função "push" para adicionar peças de roupa à fila:

void push(int item) {
    static int fim = -1; // variável estática para controlar a posição final da fila

    if (fim == 9) {
        printf("A fila está cheia. Não é possível adicionar mais peças de roupa.\n");
        return;
    }

    fim++;
    fila[fim] = item;
}

c) Função "pop" para remover a primeira peça de roupa da fila:

void pop() {
    if (fim == -1) {
        printf("A fila está vazia. Não há peças de roupa para remover.\n");
        return;
    }

    for (int i = 0; i < fim; i++) {
        fila[i] = fila[i + 1]; // reposiciona os elementos da fila
    }
    fim--;
}

d) Função para imprimir a fila na tela:

void imprimirFila() {
    printf("Fila de peças de roupa:\n");
    for (int i = 0; i <= fim; i++) {
        printf("%d ", fila[i]);
    }
    printf("\n");
}

e) Função de busca para encontrar a posição de uma peça de roupa específica:

void buscarElemento(int valor) {
    for (int i = 0; i <= fim; i++) {
        if (fila[i] == valor) {
            printf("A peça de roupa está na posição %d da fila.\n", i);
            return;
        }
    }
    printf("A peça de roupa não foi encontrada na fila.\n");
}

Com essas funções, a equipe de bastidores pode adicionar peças de roupa à fila usando a função "push", remover a primeira peça de roupa usando a função "pop", imprimir a fila para visualizar todas as peças de roupa penduradas e buscar uma peça específica usando a função de busca.

Essa abordagem garante que a equipe possa organizar e localizar facilmente as peças de roupa durante o desfile, otimizando o processo e evitando contratempos. A combinação de algoritmos e estruturas de dados, como filas, com o mundo da moda mostra como a tecnologia pode ser aplicada para melhorar os processos nos bastidores e garantir uma experiência perfeita para os espectadores do desfile.

____________________________________________________________

O que são filas estáticas?

Uma fila estática é uma estrutura de dados que segue o princípio FIFO (First-In-First-Out), ou seja, o primeiro elemento a entrar é o primeiro a sair. Imagine uma fila em uma loja de roupas, onde o cliente que chega primeiro é atendido primeiro. Nas filas estáticas, o tamanho máximo da fila é definido antecipadamente e não pode ser alterado durante a execução do programa.

Implementação de filas estáticas em C:

Vamos explorar a implementação de filas estáticas em C, considerando um cenário em que precisamos gerenciar pedidos de clientes em uma loja de roupas. Para isso, utilizaremos um array para representar a fila e variáveis adicionais para controlar o início e o fim da fila.

Passo 1: Definição da estrutura da fila

#define TAMANHO_MAXIMO 100

typedef struct {
    int inicio; // posição do primeiro elemento
    int fim;    // posição do último elemento
    int fila[TAMANHO_MAXIMO]; // array para armazenar os elementos da fila
} Fila;

Passo 2: Inicialização da fila

void inicializarFila(Fila *f) {
    f->inicio = -1;
    f->fim = -1;
}

Passo 3: Verificação se a fila está vazia

int estaVazia(Fila *f) {
    return (f->inicio == -1 && f->fim == -1);
}

Passo 4: Verificação se a fila está cheia

int estaCheia(Fila *f) {
    return (f->fim == TAMANHO_MAXIMO - 1);
}

Passo 5: Inserção de elementos na fila

void enfileirar(Fila *f, int item) {
    if (estaCheia(f)) {
        printf("A fila está cheia.\n");
        return;
    }
    if (estaVazia(f)) {
        f->inicio = 0;
    }
    f->fim++;
    f->fila[f->fim] = item;
}

Passo 6: Remoção de elementos da fila

int desenfileirar(Fila *f) {
    if (estaVazia(f)) {
        printf("A fila está vazia.\n");
        return -1;
    }
    int item = f->fila[f->inicio];
    if (f->inicio == f->fim) {
        f->inicio = -1;
        f->fim = -1;
    } else {
        f->inicio++;
    }
    return item;
}

Conclusão

As filas estáticas são uma ferramenta poderosa no desenvolvimento de sistemas para a indústria da moda, permitindo organizar e gerenciar pedidos de clientes de forma eficiente. Ao entender os conceitos de filas estáticas e sua implementação em linguagem C, entusiastas da moda e tecnologia podem utilizar essas estruturas de dados para aprimorar seus projetos e oferecer um atendimento personalizado aos clientes. A combinação entre moda e tecnologia abre um mundo de possibilidades, e o conhecimento em algoritmos e estruturas de dados é um diferencial importante nessa jornada. Experimente utilizar filas estáticas em seus projetos e descubra como elas podem otimizar processos e melhorar a experiência dos clientes na indústria da moda.

Traje Luxuoso: A Evolução Histórica da Moda