Помощь - Поиск - Пользователи - Календарь
Полная версия: Цель задачи: Вводим дату и программа показывает день недели.
Форум «Всё о Паскале» > Pascal, Object Pascal > Теоретические вопросы
slipknot178
	
var

a,b,c: integer;

p,v,s,f: real;

begin

write (’Введите число:’);

readln (a);

writeln (‘Введите месяц’);

readln (b);

writeln ('Введите год');

readln ©;

p:=(c mod 4);
v:=(c div 4);

if p=0 then case b of
1: b:=31;
2: b:=2*31-3;
3: b:=3*31-3;
4: b:=4*31-4;
5: b:=5*31-4;
6: b:=6*31-5;
7: b:=7*31-5;
8: b:=8*31-5;
9: b:=9*31-6;
10: b:10*31-6;
11: b:=11*31-7;
12: b:=12*31-7;
else
end;
s:=v*364+(c-v)*365+b+a;
f:=s div 7;
case f of
0: writeln ('воскресение');
1: writeln ('понедельник');
2: writeln ('вторник');
3: writeln ('среда');
4: writeln ('четверг');
5: writeln ('пятница');
6: writeln ('суббота');
end;
else case b of
1: b:=31;
2: b:=2*31-2;
3: b:=3*31-2;
4: b:=4*31-3;
5: b:=5*31-3;
6: b:=6*31-4;
7: b:=7*31-4;
8: b:=8*31-4;
9: b:=9*31-5;
10: b:10*31-5;
11: b:=11*31-6;
12: b:=12*31-6;
else
end;
s:=v*364+(c-v)*365+b+a;
f:=s div 7;
case f of
0: writeln ('воскресение');
1: writeln ('понедельник');
2: writeln ('вторник');
3: writeln ('среда');
4: writeln ('четверг');
5: writeln ('пятница');
6: writeln ('суббота');
end;
readln;
end.
MeatCrash
У меня есть эта программа, только она по другому выполнена, если надо, могу выложить.
MeatCrash
Вот текст этой программы. Она работает как надо.

Program Days;
Var
IsCorrectDate: Boolean;
d,m,y: Integer;

Procedure InputDate(var d,m,y: Integer; var Correctly: Boolean);
begin
Write('Vvedite datu v formate DD MM GGGG: ');
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] =
('Voscresenye','Ponedelnik','Vtornik','Sreda','Chetverg','Pyatnica',
'Subbota');
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.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.