Цитата:
Сообщение от Катерюшка
Никогда не сталкивалась с программированием, а тут поступила в универ и задали на Паскале задачку:
Даны целые числа day, month, year. Проверьте возможность существования этой даты и в случае положительного результата выведите ее в виде "число название месяц год".
|
Легко.
Только вот два замечания.
1. Вы не указали тип Паскаля (они разные бывают). Программа написана для Turbo. Если же нужно для АВС, каковой типизированных констант понимать не изволит, то помочь не могу - я с этим извращением дела не имею.
2. На допустимый диапазон лет наложено только одно ограничение: номер года должен быть больше 1582 (год принятия Григорианского календаря).
Код:
CONST
Month_Name:Array[1..12] of String=('January','February','March','April',
'May','June','July','August',
'September','October','November','December');
Days_in_Months_not_bis:Array[1..12] of Byte=(31,28,31,30,31,30,
31,31,30,31,30,31);
Days_in_Months_bis:Array[1..12] of Byte=(31,29,31,30,31,30,
31,31,30,31,30,31);
VAR
Year_Type:Byte;
Day,Month,Year:Integer;
B:Boolean;
i,j,N,Days:Integer;
BEGIN
Write('Day= ');
Readln(Day);
Write('Month= ');
Readln(Month);
Write('Year= ');
Readln(Year);
B:=True;
If Year<1583 then B:=False;
If B then
Begin
If (((Year mod 4)=0) and ((Year mod 100)>0)) or
(((Year mod 100)=0) and ((Year mod 400)=0)) then
Year_Type:=1 else Year_Type:=0;
If (Month<0) or (Month>12) or (Day<1) then B:=False;
If B then
begin
If ((Year_Type=0) and (Day>Days_in_Months_not_bis[Month])) or
((Year_Type=1) and (Day>Days_in_Months_bis[Month])) then B:=False;
end;
End;
Writeln;
If B then
Writeln(Day,', '+Month_Name[Month]+', ',Year)
else
Writeln('Incorrect!');
Readln
END.