Определение дня недели по дате (версия 1.1)
program day_of_week_version_1;
var
m: array [1..10] of char;
d1, m1, i, d: byte; {d1 - day_1; m1 - month_1; d - day}
y1, ys, yt, yf, dsNY: integer; {y1 - year_1; ys - years_between_4_and_1; yt - number_of_true_years_between_4_and_1; yf - number_of_false_years_between_4_and_1; dsNY - days_in_year_1_to_NY (NY - новый год)}
ds: longint; {ds - days_between_4_and_1}
ty: boolean; {ty - type_of_year_1}
begin
writeln('Данная программа определяет в какой день недели родился человек по заданной дате рождения. Введите дату рождения в формате ДД.ММ.ГГГГ (обозначения формата: Д - день, М - месяц, Г - год): ');
for i := 1 to 10 do read(m[i]);
d1 := (ord(m[1]) - 48)*10 + (ord(m[2]) - 48);
m1 := (ord(m[4]) - 48)*10 + (ord(m[5]) - 48);
y1 := (ord(m[7]) - 48) * 1000 + (ord(m[8]) - 48) * 100 + (ord(m[9]) - 48) * 10 + (ord(m[10]) - 48);
ty := false; {False - невисокосный, true - високосный}
if (y1 mod 4 = 0) then ty := true;
ys := y1 - 4;
yt := ys div 4;
yf := ys - yt;
ds := yt * 366 + yf * 365; {Включая все дни в последнем году, то есть в нашем}
case m1 of 01: dsNY := 365 - d1;
02: dsNY := 365 - (d1 + 31);
03: begin if ty then dsNY := 365 - (d1 + 60) else dsNY := 365 - (d1 + 59) end;
04: begin if ty then dsNY := 365 - (d1 + 91) else dsNY := 365 - (d1 + 90) end;
05: begin if ty then dsNY := 365 - (d1 + 121) else dsNY := 365 - (d1 + 120) end;
06: begin if ty then dsNY := 365 - (d1 + 152) else dsNY := 365 - (d1 + 151) end;
07: begin if ty then dsNY := 365 - (d1 + 182) else dsNY := 365 - (d1 + 181) end;
08: begin if ty then dsNY := 365 - (d1 + 213) else dsNY := 365 - (d1 + 212) end;
09: begin if ty then dsNY := 365 - (d1 + 244) else dsNY := 365 - (d1 + 243) end;
10: begin if ty then dsNY := 365 - (d1 + 274) else dsNY := 365 - (d1 + 273) end;
11: begin if ty then dsNY := 365 - (d1 + 305) else dsNY := 365 - (d1 + 304) end;
12: begin if ty then dsNY := 365 - (d1 + 60) else dsNY := 365 - (d1 + 59) end;
else begin writeln( 'Вы ввели неправильно месяц.'); halt end end;
ds := ds - (dsNY + 4); {Включая только нужное количество дней в последнем году, то есть в нашем}
d := ds mod 7;
case d of 0: writeln('Данный день является понедельником.');
1: writeln('Данный день является вторником.');
2: writeln('Данный день является средой.');
3: writeln('Данный день является четвергом.');
4: writeln('Данный день является пятницей.');
5: writeln('Данный день является субботой.');
6: writeln('Данный день является воскресеньем.')
end
end.
Комментарии:
Нету комментариев для вывода...