#include #include struct Pipoca { int capacidade; float *dados; int primeiro; int ultimo; int nItens; int serie; int data; int hora; int sabor; }; void criarFila( struct Pipoca *f, int c ) { f->capacidade = c; f->dados = (float*) malloc (f->capacidade * sizeof(float)); f->primeiro = 0; f->ultimo = -1; f->nItens = 0; f->serie = 0; f->data = 0; f->hora = 0; f->sabor= 0; } void inserir(struct Pipoca *f, int v, int serieParam, int horaParam, int dataParam, int saborParam) { if(f->ultimo == f->capacidade-1) f->ultimo = -1; f->data = dataParam; f->hora = horaParam; f->sabor = saborParam; f->serie = serieParam; f->ultimo++; f->dados[f->ultimo] = v; f->nItens++; } int remover( struct Pipoca *f ) { int temp = f->dados[f->primeiro++]; if(f->primeiro == f->capacidade) f->primeiro = 0; f->nItens--; return temp; } int estaVazia( struct Pipoca *f ) { return (f->nItens==0); } int estaCheia( struct Pipoca *f ) { return (f->nItens == f->capacidade); } void mostrarFila(struct Pipoca *f){ int cont, i; for ( cont=0, i= f->primeiro; cont < f->nItens; cont++){ printf("%.2f\t",f->dados[i++]); printf("\n hora de fab %d ", f->hora); printf("\n data de fab %d ", f->data); printf("\n serie de fab %d ", f->serie); printf("\n hora de fab %c ", f->sabor); if (i == f->capacidade) i=0; } printf("\n\n"); } int main () { int opcao, capa, serie, data, hora, sabor; int valor; struct Pipoca umaFila; // cria a fila printf("\nCapacidade da fila? "); scanf("%d",&capa); criarFila(&umaFila, capa); while( 1 ){ printf("\n1 - Inserir elemento\n2 - Remover elemento\n3 - Mostrar Fila Pipoca\n0 - Sair\n\nOpcao? "); scanf("%d", &opcao); switch(opcao){ case 0: exit(0); case 1: if (estaCheia(&umaFila)){ printf("\nFila Cheia!!!\n\n"); } else { printf("\nValor do elemento a ser inserido? "); scanf("%f", &valor); printf("\nSerie de fab pipoca "); scanf("%d", &serie); printf("\nHora de fab pipoca "); scanf("%d", &hora); printf("\nData de fab pipoca "); scanf("%d", &data); printf("\nSabor de fab pipoca- 1- chocolate 2-mel 3-caramelo "); scanf("%d", &sabor); inserir(&umaFila,valor,serie,hora,data,sabor); } break; case 2: if (estaVazia(&umaFila)){ printf("\nFila vazia!!!\n\n"); } else { valor = remover(&umaFila); printf("\n%1f removido com sucesso\n\n", valor) ; } break; case 3: if (estaVazia(&umaFila)){ printf("\nFila vazia!!!\n\n"); } else { printf("\nConteudo da fila => "); mostrarFila(&umaFila); } break; default: printf("\nOpcao Invalida\n\n"); } return 0; } }