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
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.