Advertisement
GuiBrust

Untitled

Oct 2nd, 2019
159
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.49 KB | None | 0 0
  1. #include
  2.  
  3. struct Fila {
  4.   int capacidade;
  5.   float * dados;
  6.   int primeiro;
  7.   int ultimo;
  8.   int nItens;
  9. };
  10.  
  11. void criarFila(struct Fila * f, int c) {
  12.   f - > capacidade = c;
  13.   f - > dados = (float * ) malloc(f - > capacidade * sizeof(float));
  14.   f - > primeiro = 0;
  15.   f - > ultimo = -1;
  16.   f - > nItens = 0;
  17. }
  18.  
  19. void inserir(struct Fila * f, int v) {
  20.  
  21.   if (f - > ultimo == f - > capacidade - 1)
  22.     f - > ultimo = -1;
  23.   f - > ultimo++;
  24.   f - > dados[f - > ultimo] = v; // incrementa ultimo e insere
  25.   f - > nItens++; // mais um item inserido
  26.  
  27. }
  28.  
  29. int remover(struct Fila * f) { // pega o item do começo da fila
  30.   int temp = f - > dados[f - > primeiro++]; // pega o valor e incrementa o primeiro
  31.   if (f - > primeiro == f - > capacidade)
  32.     f - > primeiro = 0;
  33.   f - > nItens--; // um item retirado
  34.   return temp;
  35. }
  36.  
  37. int estaVazia(struct Fila * f) { // retorna verdadeiro se a fila está vazia
  38.   return (f - > nItens == 0);
  39. }
  40.  
  41. int estaCheia(struct Fila * f) { // retorna verdadeiro se a fila está cheia
  42.   return (f - > nItens == f - > capacidade);
  43. }
  44.  
  45. void mostrarFila(struct Fila * f) {
  46.   int cont, i;
  47.   for (cont = 0, i = f - > primeiro; cont < f - > nItens; cont++) {
  48.     printf("%.2f\t", f - > dados[i++]);
  49.     if (i == f - > capacidade)
  50.       i = 0;
  51.   }
  52.   printf("\n\n");
  53. }
  54.  
  55. void main() {
  56.   int opcao, capa;
  57.   float valor;
  58.   struct Fila umaFila;
  59.  
  60.   // cria a fila
  61.   printf("\nCapacidade da fila? ");
  62.   scanf("%d", & capa);
  63.   criarFila( & umaFila, capa);
  64.  
  65.   // apresenta menu
  66.   while (1) {
  67.     printf("\n1 - Inserir elemento\n2 - Remover elemento\n3 - Mostrar Fila\n0 - Sair\n\nOpcao? ");
  68.     scanf("%d", & opcao);
  69.     switch (opcao) {
  70.     case 0:
  71.       exit(0);
  72.     case 1: // insere elemento
  73.       if (estaCheia( & umaFila)) {
  74.         printf("\nFila Cheia!!!\n\n");
  75.       } else {
  76.         printf("\nValor do elemento a ser inserido? ");
  77.         scanf("%f", & valor);
  78.         inserir( & umaFila, valor);
  79.       }
  80.  
  81.       break;
  82.  
  83.     case 2: // remove elemento
  84.       if (estaVazia( & umaFila)) {
  85.         printf("\nFila vazia!!!\n\n");
  86.       } else {
  87.         valor = remover( & umaFila);
  88.         printf("\n%1f removido com sucesso\n\n", valor);
  89.       }
  90.       break;
  91.  
  92.     case 3: // mostrar fila
  93.       if (estaVazia( & umaFila)) {
  94.         printf("\nFila vazia!!!\n\n");
  95.       } else {
  96.         printf("\nConteudo da fila => ");
  97.         mostrarFila( & umaFila);
  98.       }
  99.       break;
  100.     default:
  101.       printf("\nOpcao Invalida\n\n");
  102.     }
  103.   }
  104. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement