consegui escrever isso de código, porém não estou conseguindo pedir opções no começo, para saber se quer inserir tarefa e afim.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX 2
struct tarefa {
char acao[50];
char data[50];
char local[50];
};
// Variaveis declaradas aqui são visiveis por todas as funções
//int fila[MAX];
struct tarefa fila[MAX];
int inicio = 0;
int fim = 0;
int fila_cheia = 0;
int consistirFilaCheia() {
//indices de armazenamento e recuperação iguais, quando maiores do que zero indicam fila cheia.
if ((fim > 0) && (fim == inicio)) {
fila_cheia = 1;
return 1;
}
// indica que foram inseridos MAX elementos e não ocorreu nenhuma remoção, o que indica fila cheia.
if ((fim == MAX) && inicio == 0) {
fila_cheia = 1;
return 1;
}
return 0;
}
int consistirTarefaFila(int indice) {
if (indice < inicio || indice > fim) {
return 0;
}
return 1;
}
//Insere um item no final da fila
int armazena(struct tarefa t1) {
printf(“Item a ser inserido na fila: %s\n”, t1.acao);
// Houve uma remoção e o fim deve ir para 0
if ((fim == MAX) && (inicio > 0)) {
fim = 0;
fila_cheia = 1;
}
fila[fim] = t1;
fim++;
printf("Inserção OK.\n");
return 0;
}
//Remove um item da fila (o primeiro que entrou)
int remover() {
//Se inicio = 0 e fim = 0, a fila está vazia. Ou ainda, se foram inseridos 4 elementos (por exemplo) e removidos 4 elementos, fim e inicio irão apontar para a posição 5, indicando que a fila está vazia.
if (((inicio == 0) && (inicio == fim)) || ((inicio == fim) && (fila_cheia == 0))){
printf(“Fila vazia.\n”);
return 0;
}
//Verifica se já foram removidos todos os elementos de fila[0] até fila[MAX-1]. Se isso já ocorreu, o próximo elemento a ser removido é o que está em fila[0].
if (inicio == MAX)
inicio = 0;
inicio++;
return 0;
}
int main() {
struct tarefa t1;
struct tarefa t2;
struct tarefa t3;
strcpy(t1.acao, "Tarefa de casa");
strcpy(t1.data, "01/01/2017");
strcpy(t1.local, "Em casa");
strcpy(t2.acao, "Uma tarefa");
strcpy(t2.data, "01/02/2017");
strcpy(t3.local, "Na empresa");
strcpy(t3.acao, "Eu sou uma tarefa");
strcpy(t3.data, "01/03/2017");
strcpy(t3.local, "Na piscina");
if (consistirFilaCheia() == 1) {
printf("Fila cheia\n");
} else {
armazena(t1);
}
if (consistirFilaCheia() == 1) {
printf("Fila cheia\n");
} else {
armazena(t2);
}
// Consultar indice 1 (item 2 da fila)
int indice;
indice = 0;
if (consistirTarefaFila(indice) == 1) {
printf("Tarefa encontrada: %s\n", fila[indice].acao);
} else {
printf("Tarefa não encontrada\n");
}
if (consistirFilaCheia() == 1) {
printf("Fila cheia \n");
} else {
armazena(t3);
}
printf("Removendo tarefa: %d \n", indice);
remover();
if (consistirTarefaFila(indice) == 1) {
printf("Tarefa encontrada: %s\n", fila[indice].acao);
} else {
printf("Tarefa não encontrada\n");
}
}