Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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?
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?
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:
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:
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 {
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!!