Advertisement
tutorfree

pilhaExercicio01.c

Mar 17th, 2016
399
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.62 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include "fila.h"
  4.  
  5. //prototipos das funcoes
  6. int contaElementos(Fila *f);
  7. float somaElementos(Fila *f);
  8. Fila *duplicaFila(Fila *f);
  9.  
  10. void menu()
  11. {
  12.     //system("clear");
  13.     printf("Escolha uma das opcoes do menu: \n");
  14.     printf("1. Enfileira\n");
  15.     printf("2. Retira \n");
  16.     printf("3. Mostra fila\n");
  17.     printf("4. Conta elementos\n");
  18.     printf("5. Soma elementos\n");
  19.     printf("6. Duplica Fila\n");
  20.     printf("9. Fim\n");
  21. }
  22.  
  23. int main()
  24. {
  25.  Fila *fi=fila_cria();
  26.  Fila *duplicada;
  27.  int opmenu;
  28.  float item;
  29.  
  30.  do
  31.  {
  32.         menu();
  33.         scanf("%d", &opmenu);
  34.  
  35.         switch(opmenu)
  36.         {
  37.             case 1 : //insere
  38.                 printf("Digite o valor a ser enfileirado: ");
  39.                 scanf("%f", &item);
  40.                 fila_insere(fi,item);
  41.                 break;
  42.             case 2 : //retira
  43.                 if(fila_vazia(fi))
  44.                   printf("fila vazia.\n");
  45.                 else
  46.                   printf("Elemento retirado = %.0f\n",fila_retira(fi));
  47.                 break;
  48.             case 3 : //mostra
  49.                 mostra_fila(fi);
  50.                 break;
  51.             case 4 : //mostra
  52.                 printf("A fila tem %d elementos", contaElementos(fi));
  53.                 break;
  54.             case 5 : //mostra
  55.                 printf("A soma dos elementos da fila é %f.\n", somaElementos(fi));
  56.                 break;
  57.             case 6 : //mostra
  58.                 duplicada = duplicaFila(fi);
  59.                 printf("Fila duplicada\n");
  60.                 mostra_fila(duplicada);
  61.                 printf("\nFila original");
  62.                 mostra_fila(fi);
  63.                 break;
  64.             default:
  65.                 printf("Digite uma opcao valida!");
  66.                 break;
  67.         }
  68.        //switch
  69.        printf("\n");
  70.        system("pause");
  71.  
  72.     }
  73.     while(opmenu!=9);
  74. }
  75.  
  76. int contaElementos(Fila *f)
  77. {
  78.     float v;
  79.     int cont, i;
  80.  
  81.     for(i = 0; i < f->n; i++)
  82.         cont++;
  83.  
  84.     return cont;
  85. }
  86.  
  87. float somaElementos(Fila *f)
  88. {
  89.     float v, soma = 0;
  90.     int i;
  91.  
  92.     for(i = 0; i < f->n; i++)
  93.         soma = soma + f->n;
  94.  
  95.     return soma;
  96. }
  97.  
  98.  
  99. Fila *duplicaFila(Fila *f)
  100. {
  101.     Fila *nova = fila_cria();
  102.     Fila *aux = fila_cria();
  103.     float v;
  104.  
  105.     while(!fila_vazia(f))
  106.         fila_insere(aux, fila_retira(f));
  107.  
  108.         //esvazia a fila auxiliar restituindo os elementos
  109.         while(!fila_vazia(aux))
  110.         {
  111.             v = fila_retira(aux);
  112.             fila_insere(f, v);
  113.             fila_insere(nova, 2*v);
  114.         }
  115.         fila_libera(aux);
  116.         return nova;
  117. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement