дана дата dd.month.yyyy и день недели
определить дату и день недели через опр. кол-во дней
дату я определил а с днем ничего в голову не лезет а завтра здавать
program vp7_cale;
uses crt, strings;
const mname : array [1..12] of string [9] =('January', 'February',
'March', 'April', 'May',
'June', 'July', 'August',
'September','October', 'November',
'December');
dname : array [1..7] of string [9] =('Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday');
type md = array [1..12] of byte;
procedure SetNumberOfDaysInMonth(y: word; var ar: md);
var i:byte;
begin
for i:= 1 to 12 do
case i of
1, 3, 5, 7, 8, 10, 12: ar[i]:=31;
2: if y mod 4 = 0 then
ar[i]:= 29
else
ar[i]:=28;
4, 6, 9, 11: ar[i]:= 30;
end;
end;
Function GetDayNum(d:string):byte;
var i:byte;
begin
i:=0;
repeat
inc(i)
until ( copy(d, 1, 3) = copy(dname[i], 1, 3) ) or (i>=7);
GetDayNum:=i;
end;
Function GetMonthNum(m:string):byte;
var i:byte;
begin
i:=0;
repeat
inc(i)
until ( copy(m, 1, 3) = copy(mname[i], 1, 3) ) or (i>=12);
GetMonthNum:=i;
end;
var kold: md;
dd, dd1, mm, mm1, dday, dday1, i: byte;
yyyy, yyyy1,nnmove, nmove: word;
month, day: string[9];
tmp: string;
begin
ClrScr;
textcolor(red); writeln(' -= TIME MACHINE by murphy=-');
textcolor(lightgreen);
writeln('Please enter the today date:');
write(' day of month: '); textcolor(lightgray); readln(dd);
textcolor(lightgreen);
write(' month: '); textcolor(lightgray); readln(tmp); month:=tmp;
textcolor(lightgreen);
write(' year: '); textcolor(lightgray); readln(yyyy);
textcolor(lightgreen);
write(' day of week: '); textcolor(lightgray); readln(day);
SetNumberOfDaysInMonth(yyyy, kold);
writeln;
dday:=GetDayNum(day);
mm:=GetMonthNum(month);
textcolor(green);
writeln('You have chosen:');
writeln(dd,'.', mm,'.', yyyy);
textcolor(lightgreen);
writeln;
write('Enter number of days you want to move on: ');
textcolor(lightgray);
readln(nmove);
nnmove:=nmove;
if nmove + dd <= kold[mm] then
begin dd1:=nmove + dd; mm1:=mm; yyyy1:=yyyy; end
else
begin
dd1:=dd; mm1:=mm; yyyy1:=yyyy;
nmove:= nmove - (kold[mm1]-dd);
inc(mm1);
if mm1=13 then
begin
mm1:=1; inc(yyyy1);
SetNumberOfDaysInMonth(yyyy, kold);
end;
while nmove>=kold[mm1] do
begin
dec(nmove, kold[mm1]);
inc(mm1);
if mm1=13 then
begin
mm1:=1; inc(yyyy1);
SetNumberOfDaysInMonth(yyyy, kold);
end;
end;
dd1:=nmove+1;
end;
nnmove:=7-dday+1;
dday1:=nnmove mod 7;
write(dday1, ' ');
writeln(dd1,'.', mm1,'.', yyyy1);
readln;
end.
З.Ы. может еще посоветуете как лучше дату определить