ramontricolor12

LISTA 07 - Exercício 11

Aug 12th, 2013
45
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 4.94 KB | None | 0 0
  1. /*CABEÇALHO
  2.     Arquivo: LISTA 07 - Exercício 11.c
  3.     Objetivo: Construir uma agenda de compromissos.
  4.     Autor(a): Ramon Borges.
  5. */
  6. #include <stdio.h>
  7. #include <string.h>
  8. #define MAX 20
  9. struct TipoData
  10. {
  11.     int dataDia, dataAno;
  12.     char dataMes[4];
  13. };
  14.  
  15. struct TipoHorario
  16. {
  17.     int horarioHora, horarioMin, periodoDoDia;
  18. };
  19.  
  20. struct TipoAgenda
  21. {
  22.     char nomeCompromisso[50];
  23.     struct TipoData data;
  24.     struct TipoHorario horario;
  25. };
  26.  
  27. //PROTÓTIPOS DE FUNÇÕES
  28. int menu();
  29. int executarMENU(int opcao, int maximo, struct TipoAgenda agenda[]);
  30. void exibirData(struct TipoAgenda agenda[], int i);
  31. void exibirHora (struct TipoAgenda agenda[], int i);
  32. int converter_AM_PM_para24h (struct TipoAgenda agenda[], int i);
  33.  
  34. int main()
  35. {
  36.     struct TipoAgenda agenda[MAX];
  37.     int i, opcao;
  38.  
  39.     for(i = 0; i < MAX; i++)
  40.     {
  41.         printf("\nCOMPROMISSO %d", i+1);
  42.         printf("\nInforme o nome do compromisso: ");
  43.         fflush(stdin);
  44.         gets(agenda[i].nomeCompromisso);
  45.         printf("\nInforme em qual mes ocorrerá o compromisso: ");
  46.         gets(agenda[i].data.dataMes);
  47.         printf("\nInforme o dia e ano do compromisso: ");
  48.         scanf("%d %d", &agenda[i].data.dataDia, &agenda[i].data.dataAno);
  49.         do
  50.         {
  51.             printf("\nInforme o horario AM/PM (horas e minutos respectivamente):  ");
  52.             scanf("%d %d", &agenda[i].horario.horarioHora, &agenda[i].horario.horarioMin);
  53.  
  54.         }while(agenda[i].horario.horarioHora >= 13);
  55.  
  56.         do
  57.         {
  58.             printf("\nInforme o periodo: 0-AM ou 1-PM: ");
  59.             scanf("%d", &agenda[i].horario.periodoDoDia);
  60.         }while(agenda[i].horario.periodoDoDia != 0 && agenda[i].horario.periodoDoDia != 1);
  61.         printf("\nCompromisso cadastrado com sucesso!!!\n");
  62.         system("PAUSE");
  63.     }
  64.     system("cls");
  65.     opcao = menu();
  66.     executarMENU(opcao, MAX, agenda);
  67.  
  68.     return 0;
  69. }
  70.  
  71. int menu()
  72. {
  73.     int opcao;
  74.  
  75.     printf("MENU\n");
  76.     printf("1) Listar todos os compromissos.\n");
  77.     printf("2) Listar todos os compromissos apresentando os horários no formato de hora 24h.\n");
  78.     printf("3) Exibir os compromissos de uma determinada data fornecida pelo usuário.\n");
  79.     printf("4) Exibir a quantidade de compromissos de um determinado mês fornecido pelo usuário.\n");
  80.     scanf("%d", &opcao);
  81.     return opcao;
  82. }
  83.  
  84. int executarMENU(int opcao, int maximo, struct TipoAgenda agenda[])
  85. {
  86.     int i, buscaDia, buscaAno, cont, flag;
  87.     char buscaMes[4];
  88.     switch(opcao)
  89.     {
  90.         case 1:
  91.         printf("\nCompromissos");
  92.         for(i = 0; i < maximo; i++)
  93.         {
  94.             printf("\n* %s", agenda[i].nomeCompromisso);
  95.             exibirHora(agenda, i);
  96.             exibirData(agenda, i);
  97.             printf("\n");
  98.         }
  99.         break;
  100.  
  101.         case 2:
  102.         printf("\nCompromissos");
  103.         for(i = 0; i < maximo; i++)
  104.         {
  105.             converter_AM_PM_para24h(agenda, i);
  106.             printf("\n* %s (%d : %d)", agenda[i].nomeCompromisso, agenda[i].horario.horarioHora, agenda[i].horario.horarioMin);
  107.         }
  108.         break;
  109.  
  110.         case 3:
  111.         flag = 0;
  112.         printf("Informe o mes do compromisso: ");
  113.         fflush(stdin);
  114.         gets(buscaMes);
  115.         printf("Informe o dia e ano do compromisso: ");
  116.         scanf("%d %d", &buscaDia, &buscaAno);
  117.         for(i = 0; i < maximo; i++)
  118.             if(strcmp(buscaMes, agenda[i].data.dataMes) == 0)
  119.                 if(buscaDia == agenda[i].data.dataDia && buscaAno == agenda[i].data.dataAno)
  120.                 {
  121.                     printf("\n* %s", agenda[i].nomeCompromisso);
  122.                     flag = 1;
  123.                 }
  124.         if(flag == 0)
  125.             printf("\nNenhum compromisso encontrado.");
  126.         break;
  127.  
  128.         case 4:
  129.         cont = 0;
  130.         printf("\nInforme o mes: ");
  131.         fflush(stdin);
  132.         gets(buscaMes);
  133.         for(i = 0; i < maximo; i++)
  134.             if(strcmp(buscaMes, agenda[i].data.dataMes) == 0)
  135.                 cont++;
  136.         if(cont > 0)
  137.             printf("\nExiste(m) %d compromisso(s) nesse mes.", cont);
  138.         else
  139.             printf("\nNao existe nenhum compromisso nesse mes.");
  140.         break;
  141.  
  142.         default:
  143.         printf("\nOpcao Invalida!!");
  144.     }
  145.     return 0;
  146. }
  147.  
  148. void exibirData(struct TipoAgenda agenda[], int i)
  149. {
  150.     printf("\n%2d-%s-%4d", agenda[i].data.dataDia, agenda[i].data.dataMes, agenda[i].data.dataAno);
  151.     return;
  152. }
  153.  
  154. void exibirHora (struct TipoAgenda agenda[], int i)
  155. {
  156.     char periodo[3];
  157.  
  158.     if(agenda[i].horario.periodoDoDia == 1)
  159.         strcpy(periodo, "PM");
  160.     else if(agenda[i].horario.periodoDoDia == 0)
  161.         strcpy(periodo, "AM");
  162.  
  163.     printf("\n%d:%d %s", agenda[i].horario.horarioHora, agenda[i].horario.horarioMin, periodo);
  164. }
  165.  
  166. int converter_AM_PM_para24h (struct TipoAgenda agenda[], int i)
  167. {
  168.     if(agenda[i].horario.periodoDoDia == 1)
  169.         agenda[i].horario.horarioHora += 12;
  170.  
  171.     return 0;
  172. }
Advertisement
Add Comment
Please, Sign In to add comment