Advertisement
Guest User

Untitled

a guest
Jul 19th, 2018
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.44 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <stdbool.h>
  4. #include <time.h>
  5.  
  6.  
  7. struct Fila {
  8.  
  9.     int capacidade;
  10.     float *dados;
  11.     int primeiro;
  12.     int ultimo;
  13.     int nItens;
  14.  
  15. };
  16.  
  17. void criarFila( struct Fila *f, int c ) {
  18.  
  19.     f->capacidade = c;
  20.     f->dados = (float*) malloc (f->capacidade * sizeof(float));
  21.     f->primeiro = 0;
  22.     f->ultimo = -1;
  23.     f->nItens = 0;
  24.  
  25. }
  26.  
  27. void inserir(struct Fila *f, int v) {
  28.  
  29.     if(f->ultimo == f->capacidade-1)
  30.         f->ultimo = -1;
  31.  
  32.     f->ultimo++;
  33.     f->dados[f->ultimo] = v; // incrementa ultimo e insere
  34.     f->nItens++; // mais um item inserido
  35.  
  36. }
  37.  
  38. int remover( struct Fila *f ) { // pega o item do comeCB'o da fila
  39.  
  40.     int temp = f->dados[f->primeiro++]; // pega o valor e incrementa o primeiro
  41.  
  42.     if(f->primeiro == f->capacidade)
  43.         f->primeiro = 0;
  44.  
  45.     f->nItens--;  // um item retirado
  46.     return temp;
  47.  
  48. }
  49.  
  50. int estaVazia( struct Fila *f ) { // retorna verdadeiro se a fila estCB! vazia
  51.  
  52.     return (f->nItens==0);
  53.  
  54. }
  55.  
  56. int estaCheia( struct Fila *f ) { // retorna verdadeiro se a fila estCB! cheia
  57.  
  58.     return (f->nItens == f->capacidade);
  59. }
  60.  
  61. void mostrarFila(struct Fila *f){
  62.  
  63.     int cont, i;
  64.  
  65.     for ( cont=0, i= f->primeiro; cont < f->nItens; cont++){
  66.  
  67.         printf("%.2f\t",f->dados[i++]);
  68.  
  69.         if (i == f->capacidade)
  70.             i=0;
  71.  
  72.     }
  73.     printf("\n\n");
  74.  
  75. }
  76.  
  77. void main () {
  78.  
  79.     int opcao, capa;
  80.     float valor;
  81.     struct Fila umaFila;
  82.  
  83.     // cria a fila
  84.     printf("\nCapacidade da fila? ");
  85.     scanf("%d",&capa);
  86.     criarFila(&umaFila, capa);
  87.  
  88.     // apresenta menu
  89.     while( 1 ){
  90.  
  91.         printf("\n1 - Inserir elemento\n2 - Remover elemento\n3 - Mostrar Fila\n0 - Sair\n\nOpcao? ");
  92.         scanf("%d", &opcao);
  93.  
  94.         switch(opcao){
  95.  
  96.             case 0: exit(0);
  97.  
  98.             case 1: // insere elemento
  99.                 if (estaCheia(&umaFila)){
  100.  
  101.                     printf("\nFila Cheia!!!\n\n");
  102.  
  103.                 }
  104.                 else {
  105.  
  106.                     printf("\nValor do elemento a ser inserido? ");
  107.                     scanf("%f", &valor);
  108.                     inserir(&umaFila,valor);
  109.  
  110.                 }
  111.  
  112.                 break;
  113.  
  114.             case 2: // remove elemento
  115.                 if (estaVazia(&umaFila)){
  116.  
  117.                     printf("\nFila vazia!!!\n\n");
  118.  
  119.                 }
  120.                 else {
  121.  
  122.                     valor = remover(&umaFila);
  123.                     printf("\n%1f removido com sucesso\n\n", valor) ;
  124.  
  125.                 }
  126.                 break;
  127.  
  128.                 case 3: // mostrar fila
  129.                     if (estaVazia(&umaFila)){
  130.  
  131.                         printf("\nFila vazia!!!\n\n");
  132.  
  133.                     }
  134.                     else {
  135.  
  136.                         printf("\nConteudo da fila => ");
  137.                         mostrarFila(&umaFila);
  138.  
  139.                     }
  140.                     break;
  141.  
  142.                 default:
  143.                     printf("\nOpcao Invalida\n\n");
  144.  
  145.         }
  146.     }
  147. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement