Aprendendo a Programar Programando em Linguagem C - FSM
Aprendendo a Programar Programando em Linguagem C - FSM
Aprendendo a Programar Programando em Linguagem C - FSM
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
*Verifica se um ano é bissexto (retorno: Sim-1/Nao-0)*/<br />
int EhBissexto(int Ano)<br />
{<br />
return ((Ano % 4 == 0) && ((Ano % 100 != 0) || (Ano % 400 == 0)));<br />
}<br />
/*Retorna o número de dias 31 ocorridos até o mês dado*/<br />
int NumDias31(int Mes)<br />
{<br />
if (Mes < 9)<br />
return Mes/2;<br />
else<br />
return (Mes + 1)/2;<br />
}<br />
/*Retorna o número de dias de um ano até uma data dada*/<br />
int NumDiasAteUmaData(int Dia, int Mes, int Ano)<br />
{<br />
int NumDias;<br />
//Numero de dias considerando todos os meses com 30 dias<br />
NumDias = 30*(Mes - 1);<br />
//Acrescentando o número de dias 31 já ocorridos no ano e o número de dias do mês corrente<br />
NumDias = NumDias + NumDias31(Mes) + Dia;<br />
//Retificando o número de dias de fevereiro (se ele já ocorreu)<br />
if (Mes > 2)<br />
if (EhBissexto(Ano))<br />
NumDias = NumDias - 1;<br />
else<br />
NumDias = NumDias - 2;<br />
return NumDias;<br />
}<br />
/*Retorna o número de dias de uma após uma data dada*/<br />
int NumDiasAposUmaData(int Dia, int Mes, int Ano)<br />
{<br />
if (EhBissexto(Ano))<br />
return 367 - NumDiasAteUmaData(Dia, Mes, Ano);<br />
else<br />
return 366 - NumDiasAteUmaData(Dia, Mes, Ano);<br />
}<br />
/*Retorna o número de anos bissextos entre dois anos dados*/<br />
int NumAnosBissextos(int Ano1, int Ano2)<br />
{<br />
int Aux, Mult4, Mult100, Mult400;<br />
Aux = Ano2 - 1;<br />
Mult4 = (Aux - (Aux % 4) - Ano1 + (Ano1 % 4))/4;<br />
Mult100 = (Aux - (Aux % 100) - Ano1 + (Ano1 % 100))/100;<br />
Mult400 = (Aux - (Aux % 400) - Ano1 + (Ano1 % 400))/400;<br />
return Mult4 - Mult100 + Mult400;<br />
}<br />
main()<br />
{<br />
int Dia1, Mes1, Ano1, Dia2, Mes2, Ano2, Anos, NumDias, DiasDoAnoFinal, DiasDoAnoInicial;<br />
clrscr();<br />
printf("Data inicial (dd/mm/aaaa)\n");<br />
scanf("%d/%d/%d", &Dia1, &Mes1, &Ano1);<br />
printf("Data final (dd/mm/aaaa)\n");<br />
scanf("%d/%d/%d", &Dia2, &Mes2, &Ano2);