Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include "fila.h"
- //prototipos das funcoes
- int contaElementos(Fila *f);
- float somaElementos(Fila *f);
- Fila *duplicaFila(Fila *f);
- void menu()
- {
- //system("clear");
- printf("Escolha uma das opcoes do menu: \n");
- printf("1. Enfileira\n");
- printf("2. Retira \n");
- printf("3. Mostra fila\n");
- printf("4. Conta elementos\n");
- printf("5. Soma elementos\n");
- printf("6. Duplica Fila\n");
- printf("9. Fim\n");
- }
- int main()
- {
- Fila *fi=fila_cria();
- Fila *duplicada;
- int opmenu;
- float item;
- do
- {
- menu();
- scanf("%d", &opmenu);
- switch(opmenu)
- {
- case 1 : //insere
- printf("Digite o valor a ser enfileirado: ");
- scanf("%f", &item);
- fila_insere(fi,item);
- break;
- case 2 : //retira
- if(fila_vazia(fi))
- printf("fila vazia.\n");
- else
- printf("Elemento retirado = %.0f\n",fila_retira(fi));
- break;
- case 3 : //mostra
- mostra_fila(fi);
- break;
- case 4 : //mostra
- printf("A fila tem %d elementos", contaElementos(fi));
- break;
- case 5 : //mostra
- printf("A soma dos elementos da fila é %f.\n", somaElementos(fi));
- break;
- case 6 : //mostra
- duplicada = duplicaFila(fi);
- printf("Fila duplicada\n");
- mostra_fila(duplicada);
- printf("\nFila original");
- mostra_fila(fi);
- break;
- default:
- printf("Digite uma opcao valida!");
- break;
- }
- //switch
- printf("\n");
- system("pause");
- }
- while(opmenu!=9);
- }
- int contaElementos(Fila *f)
- {
- float v;
- int cont, i;
- for(i = 0; i < f->n; i++)
- cont++;
- return cont;
- }
- float somaElementos(Fila *f)
- {
- float v, soma = 0;
- int i;
- for(i = 0; i < f->n; i++)
- soma = soma + f->n;
- return soma;
- }
- Fila *duplicaFila(Fila *f)
- {
- Fila *nova = fila_cria();
- Fila *aux = fila_cria();
- float v;
- while(!fila_vazia(f))
- fila_insere(aux, fila_retira(f));
- //esvazia a fila auxiliar restituindo os elementos
- while(!fila_vazia(aux))
- {
- v = fila_retira(aux);
- fila_insere(f, v);
- fila_insere(nova, 2*v);
- }
- fila_libera(aux);
- return nova;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement