Mini - agenda
Publicado por Thiago Brito 20/02/2006
[ Hits: 7.108 ]
É 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' ){} }
Calcula Força Centrípeta Corrigido
Nenhum comentário foi encontrado.
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Meu Fork do Plugin de Integração do CVS para o KDevelop
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
Cups: Mapear/listar todas as impressoras de outro Servidor CUPS de forma rápida e fácil
Criando uma VPC na AWS via CLI
Tem como instalar o gerenciador AMD Adrenalin no Ubuntu 24.04? (15)
Tenho dois Link's ( IP VÁLIDOS ), estou tentando fazer o failover... (0)
Pendrive não formata de jeito nenhum (4)