Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*CABEÇALHO
- Arquivo: LISTA 07 - Exercício 11.c
- Objetivo: Construir uma agenda de compromissos.
- Autor(a): Ramon Borges.
- */
- #include <stdio.h>
- #include <string.h>
- #define MAX 20
- struct TipoData
- {
- int dataDia, dataAno;
- char dataMes[4];
- };
- struct TipoHorario
- {
- int horarioHora, horarioMin, periodoDoDia;
- };
- struct TipoAgenda
- {
- char nomeCompromisso[50];
- struct TipoData data;
- struct TipoHorario horario;
- };
- //PROTÓTIPOS DE FUNÇÕES
- int menu();
- int executarMENU(int opcao, int maximo, struct TipoAgenda agenda[]);
- void exibirData(struct TipoAgenda agenda[], int i);
- void exibirHora (struct TipoAgenda agenda[], int i);
- int converter_AM_PM_para24h (struct TipoAgenda agenda[], int i);
- int main()
- {
- struct TipoAgenda agenda[MAX];
- int i, opcao;
- for(i = 0; i < MAX; i++)
- {
- printf("\nCOMPROMISSO %d", i+1);
- printf("\nInforme o nome do compromisso: ");
- fflush(stdin);
- gets(agenda[i].nomeCompromisso);
- printf("\nInforme em qual mes ocorrerá o compromisso: ");
- gets(agenda[i].data.dataMes);
- printf("\nInforme o dia e ano do compromisso: ");
- scanf("%d %d", &agenda[i].data.dataDia, &agenda[i].data.dataAno);
- do
- {
- printf("\nInforme o horario AM/PM (horas e minutos respectivamente): ");
- scanf("%d %d", &agenda[i].horario.horarioHora, &agenda[i].horario.horarioMin);
- }while(agenda[i].horario.horarioHora >= 13);
- do
- {
- printf("\nInforme o periodo: 0-AM ou 1-PM: ");
- scanf("%d", &agenda[i].horario.periodoDoDia);
- }while(agenda[i].horario.periodoDoDia != 0 && agenda[i].horario.periodoDoDia != 1);
- printf("\nCompromisso cadastrado com sucesso!!!\n");
- system("PAUSE");
- }
- system("cls");
- opcao = menu();
- executarMENU(opcao, MAX, agenda);
- return 0;
- }
- int menu()
- {
- int opcao;
- printf("MENU\n");
- printf("1) Listar todos os compromissos.\n");
- printf("2) Listar todos os compromissos apresentando os horários no formato de hora 24h.\n");
- printf("3) Exibir os compromissos de uma determinada data fornecida pelo usuário.\n");
- printf("4) Exibir a quantidade de compromissos de um determinado mês fornecido pelo usuário.\n");
- scanf("%d", &opcao);
- return opcao;
- }
- int executarMENU(int opcao, int maximo, struct TipoAgenda agenda[])
- {
- int i, buscaDia, buscaAno, cont, flag;
- char buscaMes[4];
- switch(opcao)
- {
- case 1:
- printf("\nCompromissos");
- for(i = 0; i < maximo; i++)
- {
- printf("\n* %s", agenda[i].nomeCompromisso);
- exibirHora(agenda, i);
- exibirData(agenda, i);
- printf("\n");
- }
- break;
- case 2:
- printf("\nCompromissos");
- for(i = 0; i < maximo; i++)
- {
- converter_AM_PM_para24h(agenda, i);
- printf("\n* %s (%d : %d)", agenda[i].nomeCompromisso, agenda[i].horario.horarioHora, agenda[i].horario.horarioMin);
- }
- break;
- case 3:
- flag = 0;
- printf("Informe o mes do compromisso: ");
- fflush(stdin);
- gets(buscaMes);
- printf("Informe o dia e ano do compromisso: ");
- scanf("%d %d", &buscaDia, &buscaAno);
- for(i = 0; i < maximo; i++)
- if(strcmp(buscaMes, agenda[i].data.dataMes) == 0)
- if(buscaDia == agenda[i].data.dataDia && buscaAno == agenda[i].data.dataAno)
- {
- printf("\n* %s", agenda[i].nomeCompromisso);
- flag = 1;
- }
- if(flag == 0)
- printf("\nNenhum compromisso encontrado.");
- break;
- case 4:
- cont = 0;
- printf("\nInforme o mes: ");
- fflush(stdin);
- gets(buscaMes);
- for(i = 0; i < maximo; i++)
- if(strcmp(buscaMes, agenda[i].data.dataMes) == 0)
- cont++;
- if(cont > 0)
- printf("\nExiste(m) %d compromisso(s) nesse mes.", cont);
- else
- printf("\nNao existe nenhum compromisso nesse mes.");
- break;
- default:
- printf("\nOpcao Invalida!!");
- }
- return 0;
- }
- void exibirData(struct TipoAgenda agenda[], int i)
- {
- printf("\n%2d-%s-%4d", agenda[i].data.dataDia, agenda[i].data.dataMes, agenda[i].data.dataAno);
- return;
- }
- void exibirHora (struct TipoAgenda agenda[], int i)
- {
- char periodo[3];
- if(agenda[i].horario.periodoDoDia == 1)
- strcpy(periodo, "PM");
- else if(agenda[i].horario.periodoDoDia == 0)
- strcpy(periodo, "AM");
- printf("\n%d:%d %s", agenda[i].horario.horarioHora, agenda[i].horario.horarioMin, periodo);
- }
- int converter_AM_PM_para24h (struct TipoAgenda agenda[], int i)
- {
- if(agenda[i].horario.periodoDoDia == 1)
- agenda[i].horario.horarioHora += 12;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment