ulfreitas 6 Denunciar post Postado Abril 19, 2012 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
GBecker 51 Denunciar post Postado Abril 19, 2012 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
ulfreitas 6 Denunciar post Postado Abril 19, 2012 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
GBecker 51 Denunciar post Postado Abril 20, 2012 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
ulfreitas 6 Denunciar post Postado Abril 23, 2012 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