Mini - agenda
Publicado por Thiago Brito 20/02/2006
[ Hits: 7.323 ]
É uma mini agenda toda feita em C.
Possui alguns defeitos mas é open source rsrsrsrs qualquer um que tiver um pouco de conhecimento pode consertar.
#include <stdio.h>
#include <stdlib.h>
/*Program agenda*/
typedef struct agenda compromisso;
void criar_lista (void);
void cadastro(void);
void remover (void);
void mostrar (void);
void flush_in (void);
/*Delclaração das variáveis principais*/
struct agenda
{
int dia;
int mes;
int ano;
int hora;
int min;
char reuniao[100];
compromisso *prox;
};
compromisso *ultimo;
compromisso *lista;
/*Função principal*/
int main(){
int num;
do
{
printf ("\nMenu\n");
printf ("1) Para inserir compromisso digite 1.\n");
printf ("2) Para excluir compromisso digite 2.\n");
printf ("3) Para mostrar compromisso digite 3.\n");
printf ("4) Para sair da agenda digite 4.\n");
printf ("Digite a opcao desejada\n");
scanf ("%d", &num);
switch (num)
{
case 1: cadastro ();break;
case 2: remover();break;
case 3: mostrar();break;
case 4: break;
}
}while (num!=4);
return(0);
}
/*Função para criar lista*/
void criar_lista()
{
ultimo = (compromisso*)malloc(sizeof(compromisso));
lista = (compromisso*)malloc(sizeof(compromisso));
ultimo = lista;
lista->prox = NULL;
}
/*Função para cadastro*/
void cadastro (void)
{
compromisso* aux;
compromisso* old;
compromisso* new;
aux=(compromisso*)malloc(sizeof(compromisso));
if (aux)
{
refaz:
printf ("Insira a data do compromisso Exemplo: dd.mm.aaaa\n");
scanf ("%d.%d.%d",&aux->dia,&aux->mes,&aux->ano);
printf ("Insira a hora do compromisso Exemplo: hh:mm\n");
scanf ("%d:%d",&aux->hora,&aux->min);
flush_in();
printf ("Qual o compromisso desse dia?\n");
gets (aux->reuniao);
if (aux->dia<1||aux->dia>31||aux->mes<1||aux->mes>12||aux->hora<0||aux->hora>23||aux->min<0||aux->min>59)
{printf("Voce digitou algo errado. Tente de novo\n"); goto refaz;}
new=lista;
if (!ultimo)
{
lista=aux;
ultimo=aux;
aux->prox=NULL;
return;
}
old=NULL;
if (new->ano!=aux->ano)
{
while (new)
{
if (new->ano<aux->ano)
{
old=new;
new=new->prox;
}
else
{
if (old)//caso o novo aux fique no meio
{
old->prox=aux;
aux->prox=new;
return;
}
aux->prox=new;
lista=aux;
return;
}
}
ultimo->prox=aux;
aux->prox=NULL;
ultimo=aux;
return;
}
else if (new->mes!=aux->mes)
{
while (new)
{
if (new->mes<aux->mes)
{
old=new;
new=new->prox;
}
else
{
if (old)//caso o novo aux fique no meio
{
old->prox=aux;
aux->prox=new;
return;
}
aux->prox=new;
lista=aux;
return;
}
}
ultimo->prox=aux;
aux->prox=NULL;
ultimo=aux;
return;
}
else if (new->dia!=aux->dia)
{
while (new)
{
if (new->dia<aux->dia)
{
old=new;
new=new->prox;
}
else
{
if (old)//caso o novo aux fique no meio
{
old->prox=aux;
aux->prox=new;
return;
}
aux->prox=new;
lista=aux;
return;
}
}
ultimo->prox=aux;
aux->prox=NULL;
ultimo=aux;
return;
}
else if (new->hora!=aux->hora)
{
while (new)
{
if (new->hora<aux->hora)
{
old=new;
new=new->prox;
}
else
{
if (old)//caso o novo aux fique no meio
{
old->prox=aux;
aux->prox=new;
return;
}
aux->prox=new;
lista=aux;
return;
}
}
ultimo->prox=aux;
aux->prox=NULL;
ultimo=aux;
return;
}
else if (new->min!=aux->min)
{
while (new)
{
if (new->min<aux->min)
{
old=new;
new=new->prox;
}
else
{
if (old)//caso o novo aux fique no meio
{
old->prox=aux;
aux->prox=new;
return;
}
aux->prox=new;
lista=aux;
return;
}
}
ultimo->prox=aux;
aux->prox=NULL;
ultimo=aux;
return;
}else printf("Ja existe compromisso nesse horario\n");
}
else printf ("\n\nNao e possivel marcar compromisso");
}
/*Remove elementos da lista*/
void remover()
{
compromisso *aux;
compromisso *aux2;
int dia,mes,ano,hora,min;
printf("\nExcluir\n");
if (lista)
{
refaz2:
printf("\nEntre com o dia, mes, ano e hora\t Exemplo dd.mm.aaaa hh:mm\n");
scanf("%d.%d.%d %d:%d",&dia,&mes,&ano,&hora,&min);
if (dia<1||dia>31||mes<1||mes>12||hora<0||hora>23||min<0||min>59)
{printf("Voce digitou algo errado. Tente de novo\n"); goto refaz2;}
if (dia==lista->dia&&mes==lista->mes&&ano==lista->ano&&hora==lista->hora&&min==lista->min)
{
aux=lista;
lista=lista->prox;
free(aux);
}else for(aux=lista;aux->prox;aux=aux->prox)
{
if (dia==(aux->prox)->dia&&mes==(aux->prox)->mes&&ano==(aux->prox)->ano&&hora==(aux->prox) ->hora&&min==(aux->prox)->min)
{
aux2=aux->prox;
if (aux2==ultimo)
ultimo=aux;
aux->prox=aux->prox->prox;
free(aux2);
break;
}
}
}else printf("\nNao ha elementos na lista.\n");
}
/*Mostrar os elementos da lista*/
void mostrar()
{
int achou=0;
compromisso *aux;
compromisso *aux2;
int dia,mes,ano;
refaz3:
printf("Qual o dia do compromisso? dd.mm.aaaa\n");
scanf("%d.%d.%d",&dia,&mes,&ano);
if (dia<1||dia>31||mes<1||mes>12)
{printf("Voce digitou algo errado. Tente de novo\n"); goto refaz3;}
if (lista==NULL) printf("Não existem compromissos na agenda\n");
for (aux=lista;aux!=NULL;aux=aux->prox)
{
if (dia==aux->dia&&mes==aux->mes&&ano==aux->ano)
{
printf("Dia\tMes\tAno\tHora\tCompromisso\n");
printf("%d\t%d\t%d\t%d:%d\t%s\n",aux->dia, aux->mes, aux->ano, aux->hora, aux->min,aux->reuniao);
achou=1;
}
}
if (achou==0)
printf("Não exite compromisso nesse horário\n");
}
void flush_in()
{
int ch;
while( (ch = fgetc(stdin)) != EOF && ch != '\n' ){}
}
Nenhum comentário foi encontrado.
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Linux em 2025: Segurança prática para o usuário
Desktop Linux em alta: novos apps, distros e privacidade marcam o sábado
IA chega ao desktop e impulsiona produtividade no mundo Linux
Novos apps de produtividade, avanços em IA e distros em ebulição agitam o universo Linux
Como instalar o repositório do DBeaver no Ubuntu
Como instalar o Plex Media Server no Ubuntu
Digitando underscore com "shift" + "barra de espaços"
Como ativar a lixeira e recuperar aquivos deletados em um servidor Linux
Como mudar o nome de dispositivos Bluetooth via linha de comando
É normal não gostar de KDE? (9)
Linux é a solução para o fim do Windows10? (2)
Problemas com Driver NVIDIA (4)









