Просмотр полной версии : нужно написать програмку которая отсчитывает дни
MatriX30000
29.01.2010, 08:45
т.е мне нужна программа которая будет считать дни с 14.11.2008 г по настоящее время сколько дней прошло и т.д.... помогите кому не сложно...
cel1697i845
29.01.2010, 09:15
т.е мне нужна программа которая будет считать дни с 14.11.2008 г по настоящее время сколько дней прошло и т.д.... помогите кому не сложно...
Реализация на TP (код не мой, нашел давно где то в инете)
program data;
uses crt;
label escape,asd,dsa,contin;
var
m1:array[1..12] of integer;
m2:array[1..12] of integer;
a:array[1..3] of longint;
b:array[1..3] of longint;
err:boolean;
cd:char;
i:byte;
razn,d1,d2,mo1,mo2,y1,y2:longint;
begin
clrscr;
writeln('Input first date');
writeln('Day');
read(a[1]);
writeln('Month');
read(a[2]);
writeln('Year');
read(a[3]);
writeln('Input second date');
writeln('Day');
read(b[1]);
writeln('Month');
read(b[2]);
writeln('Year');
read(b[3]);
for i:=1 to 12 do
begin
if (i=1) or (i=3) or (i=5) or (i=7) or (i=8) or (i=10) or (i=12) then
begin
m1[i]:=31;
m2[i]:=31;
end
else
begin
m1[i]:=30;
m2[i]:=30;
end;
end;
if a[3]/4=int(a[3]/4) then m1[2]:=29 else m1[2]:=28;
if b[3]/4=int(b[3]/4) then m2[2]:=29 else m2[2]:=28;
clrscr;
if (a[1]<=0) or (b[1]<=0) or (a[2]<=0) or (b[2]<=0) or (a[3]<=0) or (b[3]<=0) then err:=true;
if (a[2]>12) or (b[2]>12) then err:=true;
if a[1]>m1[a[2]] then err:=true;
if b[1]>m2[b[2]] then err:=true;
if err=true then
begin
writeln('Error! Please check your data.');
goto escape;
end;
if a[3]>b[3] then
dsa:
begin
d1:=a[1];
mo1:=a[2];
y1:=a[3];
d2:=b[1];
mo2:=b[2];
y2:=b[3];
goto contin;
end;
if b[3]>a[3] then
asd:
begin
d1:=b[1];
d2:=a[1];
mo1:=b[2];
mo2:=a[2];
y1:=b[3];
y2:=a[3];
goto contin;
end;
if b[3]=a[3] then
begin
if a[2]>b[2] then goto dsa;
if b[2]>a[2] then goto asd;
if b[2]=a[2] then
begin
if a[1]>b[1] then goto dsa;
if a[1]<b[1] then goto asd;
end;
end;
contin:
razn:=0;
repeat
if y2/4=int(y2/4) then m1[2]:=29 else m1[2]:=28;
razn:=razn+1;
if (d2<=m1[mo2]) and (mo2<=12) then d2:=d2+1;
if (d2>m1[mo2]) and (mo2<12) then
begin
mo2:=mo2+1;
d2:=1;
end;
if (d2>m1[mo2]) and (mo2=12) then
begin
y2:=y2+1;
d2:=1;
mo2:=1;
end;
until (d1=d2) and (mo1=mo2) and (y1=y2);
escape:
writeln('Difference');
writeln(razn);
writeln('days');
cd:=readkey;
end.
Скачать (http://depositfiles.com/files/ta2lpahla)
P.S. Самому писать к сожалению времени нет.
Если на Delphi, то есть функция DaysBetween: http://www.delphisources.ru/pages/faq/faq_delphi_basics/DaysBetween.php.html
FILETIME orig;
// берем текущее время (100 наносекундных интервалов с 1 янв 1601г)
GetSystemTimeAsFileTime(&orig);
SYSTEMTIME st_2008;
FILETIME ft_2008;
st_2008.wYear = 2008;
st_2008.wMonth = 11;
st_2008.wDay = 14;
st_2008.wHour = 0;
st_2008.wMinute = 0;
st_2008.wSecond =0;
st_2008.wMilliseconds = 0;
// берем скока 100 наносекундных интервалов с 11 14 2008г)
SystemTimeToFileTime(&st_2008, &ft_2008);
ULONG totalseconds, totalminutes, totalhours, totaldays, totalyears;
ULONG seconds1, seconds2;
// конвертим в число секунд с 1970года
RtlTimeToSecondsSince1970((PLARGE_INTEGER)&orig, &seconds1);
RtlTimeToSecondsSince1970((PLARGE_INTEGER)&ft_2008, &seconds2);
// во и терь получаем разницу в секундах между сейчас и 11.14.2008
totalseconds = seconds1 - seconds2;
// и делим чтоб получить часы дни и годы
totalminutes = totalseconds / 60;
totalhours = totalminutes / 60;
totaldays = totalhours / 24;
totalyears = totaldays / 365;
// печатаем
dprintf("С 11.14.2008 прошло: %d секунд или %d минут или %d часов или %d дней или %d лет",
totalseconds, totalminutes, totalhours, totaldays, totalyears);
// чтобы выводить можно использовать double
// а чтобы точно (не или или) х дней х часов - дели по модулю
ели у тя не видит RtlTimeTo...
то повыше добавь
void (__stdcall *RtlTimeToSecondsSince1970)(PLARGE_INTEGER, PULONG);
(FARPROC&)RtlTimeToSecondsSince1970 = GetProcAddress(GetModuleHandle("ntdll.dll"), "RtlTimeToSecondsSince1970");
MatriX30000
29.01.2010, 16:47
а на basic как?
MatriX30000
29.01.2010, 17:26
или C++
MatriX30000
29.01.2010, 20:47
да мне надо чтобы её потом ещё её красиво оформить и в екзешник
или C++
а я по китайски написал или С не прет?) зато апиии ))))
MatriX30000
29.01.2010, 23:15
а можешь написать её и в екзешник сохранить мудился мудился и не намудился...(((
MatriX30000
30.01.2010, 21:42
напишите кто нибудь и в екзешник сохраните кому не лень....
MatriX30000
02.02.2010, 17:13
up
вот http://www.rapidshare.ru/1362181
зы. а нахркена оно тебе - с девченкой штоль поругался?)
MatriX30000
02.02.2010, 22:10
типо того, но гораздо не то... как бэ 2 день рождение))))
спс за прогу
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot