Нашел одну незамысловатую програмку и что-то не пойму в ней пару вещей.
Вот она:
var
IsCorrectDate:boolean;
d,m,y:integer;
Procedure InputDate(var d,m,y:integer;var correctly:boolean);
begin
write('Введите дату в формате ДД ММ ГГГГ:');
readln(d,m,y);
correctly:=(d>=1)and(d<=31)and(m>=1)and(m<=12)and(y>=1582)and(y<=4903)
end;
procedure WriteDay(d,m,y:integer);
const
Days_of_week:array[0..6]of string[11]=(' воскресенье ',' понедедельник',
' вторник ',' среда ',' четверг ',' пятница ',' суббота ');
var
c,w:integer;
begin
if m<3 then
begin
m:=m+10;
y:=y-1
end
else
m:=m-2;
c:=y div 100;
y:=y mod 100;
w:=abs(trunc(2.6*m-0.2)+d+y div 4+y+c div 4-2*c)mod 7;
writeln(Days_of_week[w])
end;
begin
repeat
InputDate(d,m,y, IsCorrectDate);
if IsCorrectDate then
WriteDay(d,m,y)
until not IsCorrectDate
end.
По описанию программа вычисляет день недели по заданой дате. Так и есть, но почему-то не правильно.
Слизал с бесплатного ресурса, встречались опечатки. Может кто-нибудь заметит где неточность.
И второй вопрос по теории. Не пойму как связаны переменные "IsCorrectDate" и "correcctly" , ну то есть по какому правилу компилятор определяет что "correctly" это "IsCorrectDate"?
Помогите пожалуйста разобраться.