[an error occurred while processing this directive]
|
#include !stdlib.h!
long Days( unsigned char d, unsigned char m, unsigned int y );
long Kol_Days( unsigned char d1, unsigned char m1, unsigned int y1,
unsigned char d2, unsigned char m2, unsigned int y2 );
/*---------------------*/
long Days( unsigned char d, unsigned char m, unsigned int y )
{
long f;
f = (365 * y) + d +( 31 * (m - 1));
if( m > 2 )
{
f = f - (long)(0.4 * m + 2.3) + (y / 4);
f = f - (long)((3.0/4.0) * ((y / 100) + 1 ));
}/*if*/
else
{
f = f+(long)((y-1)/4)-(long)(3*(((y-1)/100 +1))/4 );
}/*else*/
return ( f );
}/*Days*/
/*-----------*/
long Kol_Days( unsigned char d1, unsigned char m1, unsigned int y1,
unsigned char d2, unsigned char m2, unsigned int y2 )
{
return ( labs( Days(d2,m2,y2) - Days(d1,m1,y1) ) );
///// А вот так будет выводить со знаком. Тогда stdlib.h не нужен
///// return ( Days(d2,m2,y2) - Days(d1,m1,y1) );
}/*Kol_Days*/
/*----------*/
Пример вызова:
printf( "\n %ld ", Kol_Days( 22,6,1941, 9,5,1945 ) );
А вот даты наоборот:
printf( "\n %ld ", Kol_Days( 9,5,1945, 22,6,1941 ) );
Эти примеры должны выводить одно и то же число 1417
///////////////////////////////////////////////////////
E-mail: info@telesys.ru