int main()
{
int dia=0; /*Variavel para receber o dia do mês*/
int mes=0; /*Variavel para receber o mês do ano*/
int ano=0; /*Variavel para receber o ano*/
int total_dias=0; /*Variavel para receber o somatorio dos dias do ano*/
int dias=0; /*Variavel com o somatorio dos dias*/
int ano_bissexto=0; /*Variavel para diferenciar o ano bissexto*/
data: /*comando goto para voltar ao inicio do programa, em caso de data
errada*/
do
{
printf ("Digite
um dia do mes no formato dd: \n"); /*Entrada do dia do mês*/
scanf ("%d", &dia); /*Leitura do dia do mês*/
if (dia>31||dia<1) /*Conferir se o dia é maior que 31 e menor que 1*/
printf ("\nDia
invalido, digite novamente!\n"); /*Solicita digitar o dia
novamete caso esteja fora do padrão*/
(dia>31||dia<1);
}while(dia>31||dia<1);
do
{
printf ("\nEscolha
um mes do ano pelo numero: \n"); /*Entrada do mês do ano*/
printf ("\t
(1)...janeiro\n");
printf ("\t
(2)...fevereiro\n");
printf ("\t
(3)...março\n");
printf ("\t
(4)...abril\n");
printf ("\t
(5)...maio\n");
printf ("\t
(6)...junho\n"); /*Opções de meses válidos*/
printf ("\t
(7)...julho\n");
printf ("\t
(8)...agosto\n");
printf ("\t
(9)...setembro\n");
printf ("\t
(10)...outubro\n");
printf ("\t
(11)...novembro\n");
printf ("\t
(12)...dezembro\n");
scanf ("%d", &mes); /*Leitura do mês*/
if (mes>12||mes<1) /*Conferir se o mes é maior que 12 e menor que 1*/
printf ("\nMes
invalido, digite novamente!\n"); /*Solicita digitar o mês
novamete caso esteja fora do padrão*/
(mes>12||mes<1);
}while(mes>12||mes<1);
do
{
printf ("\nDigite
um ano entre 1900 e 2100; \n"); /*Entrada do ano*/
scanf ("%d", &ano); /*Leitura do ano*/
if (ano>2100||ano<1900) /*Conferir se o ano é maior que 2100 e menor que 1900*/
printf ("Ano
invalido, digite novamente!\n"); /*Solicita digitar o mês
novamete caso esteja fora do padrão*/
}while (ano>2100||ano<1900);
{
switch(mes){ /*Inicio verifidor, confere se o mês é de 31, 30, 29/28 dias,
confere se é ano bissexto ou não*/
case 1:
if(dia > 31){
printf("\nJaneiro tem ate dia 31. Tente
novamente.\n\n");
goto data;
}
case 2:
if(((ano%4)==0) && ((ano%100)!=0) || ((ano%400)==0)){
if(dia > 29){
printf("Em
anos bissextos, fevereiro vai ate dia 29. Tente novamente.\n\n");
goto data;
}
}
else{
if(dia > 28){
printf("\nFevereiro
vai ate dia 28. Tente novamente.\n\n");
goto data;
}
}
break;
case 3:
if(dia > 31){
printf("\nMarco
tem ate dia 31. Tente novamente.\n\n");
goto data;
}
case 4:
if(dia > 30){
printf("\nAbril
tem ate dia 30. Tente novamente.\n\n");
goto data;
}
case 5:
if(dia > 31){
printf("\nMaio
tem ate dia 31. Tente novamente.\n\n");
goto data;
}
case 6:
if(dia > 30){
printf("\nJunho
tem ate dia 30. Tente novamente.\n\n");
goto data;
}
case 7:
if(dia > 31){
printf("\nJulho
tem ate dia 31. Tente novamente.\n\n");
goto data;
}
case 8:
if(dia > 31){
printf("\nAgosto
tem ate dia 31. Tente novamente.\n\n");
goto data;
}
case 9:
if(dia > 30){
printf("\nSetembro
tem ate dia 30. Tente novamente.\n\n");
goto data;
}
case 10:
if(dia > 31){
printf("\nOutubro
tem ate dia 31. Tente novamente.\n\n");
goto data;
}
case 11:
if(dia > 30){
printf("\nNovembro
tem ate dia 30. Tente novamente.\n\n");
goto data;
}
case 12:
if(dia > 31){
printf("\nDezembro
tem ate dia 31. Tente novamente.\n\n");
goto data;
}
} /*Final verificador*/
{
ano_bissexto = ( ((ano % 4 == 0) && (ano % 100 > 0)) || (ano % 400 == 0) ); /*Somatorio
dos dias do ano*/
switch (mes) {
case 12: total_dias += 30;
case 11: total_dias += 31;
case 10: total_dias += 30;
case 9: total_dias += 31;
case 8: total_dias += 31;
case 7: total_dias += 30;
case 6: total_dias += 31;
case 5: total_dias += 30;
case 4: total_dias += 31;
case 3: total_dias += ano_bissexto?29:28;
case 2: total_dias += 31;
}
total_dias += dia;
dias = total_dias; /*Final somatorio dias do
ano*/
}
}
printf("\n\nData
valida: %d/%d/%d.\n", dia, mes, ano); /*Saida de dados na tela,
informa a data digitada*/
printf ("\n\nEsta
data representa o %do. dia de %d.\n", dias, ano); /*Saida de dados na tela, informa
a dia do ano na tela*/
return(0);
}
Nenhum comentário:
Postar um comentário