Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

ulfreitas

[Resolvido] Fila

Recommended Posts

Bom dia pessoal to com uma duvida sobre Fila, o exercicio pede:

Usando o conceito de Fila crie uma agenda de eventos que comporte no máximo 100 eventos.

Uma função para Inserir eventos.

Uma função para Listar o próximo evento da Fila.

Uma função para Remover o evento da Fila apos ser listado.

 

#include <stdio.h>
#include <stdlib.h>

#define max 100

char Agenda[max];
int inicio = 0, fim = 0;

void Inserir(void);
void Listar(void);
void Remover(void);

int main()
{
   int t, opc;

   for(t=0; t<max; t++) Agenda[t] = NULL; // Inicia a Agenda

   // Menu
   for(;;){
       printf("(1) Inserir\n(2) Listar\n(3) Remover\n(4) Sair\n");
       scanf("%d%*c", &opc);
       switch(opc){
           case 1 :
               Inserir();
               break;
           case 2 :
               Listar();
               break;
           case 3 :
               Remover();
               break;
           case 4 :
               exit(0);
       }
   }
}

// Insere um evento na lista
void Inserir(void){
   char e[250]; // recebe o evento
   int opc;

   do{
       printf("Insira o evento %d: ", inicio+1);
       gets(e);
       /*Como passo o evento para a Fila? eu criei um vetor seria melhor utilizar uma matriz?*/

       printf("(1)Inserir outro\n(2) Voltar ao menu\n");
   }while(opc != 2);
}

 

Ainda nao fiz as outras funçoes eu gostaria que me ajudassem com essa, como vou inserir o evento na Fila eu criei um vetor seria melhor ter utilizado uma matriz?

Compartilhar este post


Link para o post
Compartilhar em outros sites

uliFreitas,

 

Depende o tipo de dados que tu vai armazenar. No seu caso você criou um vetor de char, para armazenar um caracter.

Se a sua ideia é guardar registros, exemplo, Nome e Telefone. Aconselho o uso de estruturas.

struct sRegistro {
   char strNome[30];
   int iNumeroTelefone;
};

Assim você pode criar um vetor de estruturas.

 

Mas se você não pode ou não aprendeu a utilizar estruturas, aí tem de ser matriz mesmo. =P

 

Espero ter ajudado, FLW!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado pela resposta GBeker

na verdade a lista recebe uma string, nao um caracter, tentei fazer mais ou menos o que você falou com struct

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef struct Fila {
   char eventos[250];
};
int inicio = 0, fim = 0;

void Inserir(Fila *a);
void Listar(Fila *a);
void Remover(void);

int main()
{
   Fila agenda[100];
   int opc;

   for(;;){
       printf("(1) Inserir\n(2) Listar\n(3) Remover\n(4) Sair\n");
       scanf("%d%*c", &opc);
       switch(opc){
           case 1 :
               Inserir(agenda);
               break;
           case 2 :
               Listar(agenda);
               break;
           case 3 :
//                Remover();
               break;
           case 4 :
               exit(0);
       }
   }
}

// Insere um evento na lista
void Inserir(Fila *a){
   int opc;
   char s[250];

   do{
       system("cls");
       printf("Insira o evento: ");
       gets(s);
       strcpy((a[inicio].eventos),s);
       inicio++;
       printf("\n(1) Inserir outro\n(2) Voltar ao menu\n");
       scanf("%d%*c", &opc);
   }while(opc != 2);    
}

void Listar(Fila *a){
   int i;
   for(i=0; i<inicio; i++){
       printf("%s\n", a[fim].eventos );
       fim++;
   }
}

Até certo ponto deu certo, nao implementei a funçao de remover, na verdade falta muita coisa ainda;

Mas na verdade eu estou meio confuso quanto a Filas e Pilhas, eu entendi o conceito delas, mas nao sei implementar todo material que eu achei até agora que fala sobre o assunto tem exemplos muito confusos e acabo me perdendo, isso quando nao estão cheio de erros :pinch: .

Você, ou alguem q estiver lendo o tópico, saberia me indicar algum material pra estudar ou alguma implementação em Fila e Pilha já pronta?

Compartilhar este post


Link para o post
Compartilhar em outros sites

ulfreitas,

 

Encontrei este artigo sobre filas em C, LINK. Ele nem utiliza estrutura, é apenas com vetores e ponteiros.

 

Neste outro LINK, um exemplo de pilhas. Utilizando estrutura e ponteiros.

 

Sei que você não mencionou mas segue neste LINK, oura estrutura de dados bastante útil.

As listas encadeadas. Também utilizando estrutura e ponteiros.

 

Espero ter ajudado, FLW! :lol:

Compartilhar este post


Link para o post
Compartilhar em outros sites

blza GBecker clareou as idéias agora, valeu

fiz um exemplo simples de pilha

#include <stdio.h>
#include <stdlib.h>

#define max 5

int pilha[max];
int topo = 0;

void push(int i);
int pop(void);

int main()
{
   int opc, n;

   for(;;)
   {   
       system("cls");
       printf("(1)Incluir\n(2)Recuperar\n(3)Sair\n");
       scanf("%d%*c", &opc);
       system("cls");
       switch(opc)
       {
           case 1 :
               printf("Informe um valor: ");
               scanf("%d%*c", &n); 
               push(n);
               break;
           case 2 :
               printf("Valor: %d\n", pop());
               scanf("%*c");
               break;
           case 3 :
               exit(0);
       }
   }
}

void push(int i)
{
   if(topo >= max)
   {
       printf("Pilha cheia\n");
       scanf("%*c");
       return;
   }
   pilha[topo] = i;
   topo++;
}

int pop(void)
{
   if(topo <= 0)
   {
       printf("Pilha vazia\n");
       scanf("%*c");
       return 0;
   }
   topo--;
   return pilha[topo];
}

 

Agora vou seguindo, obrigado :thumbsup:

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.