Ir ao conteúdo
  • Cadastre-se

Mark Zanon

Membro Júnior
  • Posts

    2
  • Cadastrado em

  • Última visita

Reputação

1
  1. @giu_d Segue o código inteiro #include<stdio.h> #include<stdlib.h> #define MAX 5 struct circular { int com; int fim; int total; int memo[MAX]; }; typedef struct circular circular; void enfileirar(struct circular *F, int x); int desenfileirar(struct circular *F); void listar(struct circular A); int busca(struct circular B, int x); int main () { struct circular F; F.com = 0; F.total = 0; F.fim = -1; int opc,x,pos,num; do { opc = menu(); switch(opc) { case 1: if(F.fim==MAX-1) { printf("Fila cheia "); } else { printf("Digite o numero que deseja inserir "); scanf("%d", &x); if(busca(F,x) == 1) { printf("Nao eh possivel inserir numeros repetidos "); } else { enfileirar(&F, x); } } break; case 2: if(F.total == 0) printf("Fila vazia "); else printf("Valor retirado = %d", desenfileirar(&F)); break; case 3: if(F.fim == -1) printf("\n Fila vazia "); else listar(F); break; case 4: printf("Digite o numero que deseja buscar "); scanf("%d", &x); if((busca(F,x)==1)) printf("Achou oba!"); else printf("Numero nao encontrado :/"); case 5: printf("Saindo "); break; default: printf("Posicao invalida "); } }while(opc!=5); } void enfileirar(struct circular *F, int x) { F->fim++; if(F->fim == MAX) F->fim = 0; F->memo[F->fim] = x; F->total++; } int desenfileirar(struct circular *F) { int aux; aux = F->memo[F->com]; F->com++; if(F->com == MAX) { F->com = 0; } F->total --; return aux; } void listar(struct circular A) { while(A.total!=0) { printf("%d", desenfileirar(&A)); } } } int busca(struct circular B, int x) { int achou; while(B.total!=0) { if(x == desenfileirar(&B)) { achou = 1; } } return achou; } int menu() { int opc; printf("\n 1- Enfileirar "); printf("\n 2- Desenfileirar "); printf("\n 3- Listar "); printf("\n 7 - Busca"); printf("\n 8 - Sair"); printf("\n OPC = "); scanf("%d", &opc); return opc; }
  2. Estou trabalhando num programa de fila circular onde desejo implementar uma função de "furar fila", onde o usuário insere um número e este número deveria ser inserido nos espaços da fila anteriores a f.com. Porém a lógica que implementei não pareceu funcionar muito bem, gostaria de pedir ajuda com ideias ou sobre o que fazer efetivamente no código. Declarei a minha fila assm: struct circular { int com; int fim; int total; int memo[MAX]; }; typedef struct circular circular; int main () { struct circular F; F.com = 0; F.total = 0; F.fim = -1; } Deste modo eu declaro a fila e a inicializo na main, a função que tentei criar porém não funcionou foi esta: void furafila(struct circular *F, int x) { int aux,aux2; aux = F->com; F->fim++; if(F->fim == MAX) { F->fim = 0; } aux2=F->fim; F->memo[F->fim] = x; F->com = aux2; F->fim = aux-1; F->total++; } Alguma sugestão?

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...