Mini - agenda

Publicado por Thiago Brito 20/02/2006

[ Hits: 7.088 ]

Download lista4_q1.c




É uma mini agenda toda feita em C.
Possui alguns defeitos mas é open source rsrsrsrs qualquer um que tiver um pouco de conhecimento pode consertar.

  



Esconder código-fonte

#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' ){}
}

Scripts recomendados

Jogo da Velha (Corrigido)

Filas em C

Quadrado ou retângulo

Árvores Binárias em C

Uma pequena "CALCULADORA" (apenas SOMA).


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts