Показать сообщение отдельно
Старый 01.02.2012, 20:35   #2 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Катерюшка Посмотреть сообщение
Никогда не сталкивалась с программированием, а тут поступила в универ и задали на Паскале задачку:
Даны целые числа 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.
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070