Используя процедуры работы с датой, определить день недели даты, введенной с клавиатуры. Для этой программы понадобится логическая функция, которая проверяет корректность любой даты. Входными параметрами процедуры будут переменные типа word:Y(год), M(месяц), D(день). Если дата корректна, функция возращает true, иначе False. Заголовок процедуры : function Correctly(Y, M, D: word)- Pascal(Паскаль)

Uses CRT, Dos;
Var Year1, Month1, Day1, Year, Month, Day, DayofWeek: word;
Const Days:array [0..6] of String[11]=
('Voskresenie', 'Ponedelnik', 'Vtornik', 'Sreda', 'Chetverg', 'Pyatnica', 'Subbota');
function Correctly (Y,M,D: word): Boolean;
begin
Correctly:=true;
if ((Y<1980) and (Y>2099))
or not(M in [1..12])
or not(D in [1..31])
or((M in [4,6,9,11])and(D=31))
or((M=2)and(Y mod 4=0) and (M>29))
or((M=2)and(Y mod 4<>0) and (M>28))
then Correctly:=false
End;
Begin
Clrscr;
Writeln ('Vvedite chislo');
Readln (Day);
Writeln ('Vvedite mesyac');
Readln (Month);
Writeln ('Vvedite god');
Readln (Year);
if Correctly (Year, Month, Day) then
begin
Writeln ('Data correctna');
GetDate (Year1, Month1, Day1, DayofWeek);
SetDate (Year, Month, Day);
GetDate (Year, Month, Day, DayofWeek);
SetDate (Year1, Month1, Day1);
if DayofWeek=0 then
Writeln (Day,'.', Month,'.', Year,' ',days[DayofWeek],'!!!')
else
if (DayofWeek=6) or (DayofWeek=5) then
Writeln (Day,'.', Month,'.', Year,' ',days[DayofWeek],'!!!')
else
Writeln (Day,'.', Month,'.', Year,' ',days[DayofWeek],'!!!')
end
else
Writeln ('Data necorrectna');
readln
end.

Leave a Comment

47 − 37 =