[an error occurred while processing this directive]
Бросьте, Small, страдать! Вот Вам в честь дня рождения Ким Чен Ира самая кондовая функция вычисления количества дней :)))
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено cout 16 февраля 2005 г. 12:28
В ответ на: Как на C высчитать колличество дней прошедших между двумя датами? отправлено Small 16 февраля 2005 г. 10:32

#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: 

Тема (обязательно):
Сообщение:

Ссылка на URL: 
Название ссылки: 

URL изображения: 


Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru