22.10.2014 Views

Aprendendo a Programar Programando em Linguagem C - FSM

Aprendendo a Programar Programando em Linguagem C - FSM

Aprendendo a Programar Programando em Linguagem C - FSM

SHOW MORE
SHOW LESS

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);

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!