Составьте программу, которая, учитывая наименование года и день недели соответствующий 1 января, выводит на экран наименования месяцев в которых число 13 выпадет на пятницу (программа pascal abc) надо, не понимаю как составить(

loveinyourhard loveinyourhard    1   06.08.2019 07:00    0

Ответы
Yogurt1958 Yogurt1958  04.10.2020 00:38
//Можно и без дня недели пятницы
//PascalABC.NET 3.2 сборка 1318

//PascalABC вариант

Var
  Year,YearCode:integer;
begin
readln(Year);
  case(Year div 100 mod 4) of 
 0:YearCode:=6;
  1:YearCode:=4;
  2:YearCode:=2;
  3:YearCode:=0;
  end;
YearCode:=(YearCode+Year mod 100+ Year mod 100 div 4) mod 7;
if Year mod 4<>0 then
  begin
    if (13+1+YearCode) mod 7=6 then writeln('Январь');
  end
else
    if (13+1+YearCode) mod 7=0 then writeln('Январь');
if Year mod 4<>0 then
  begin
    if (13+4+YearCode) mod 7=6 then writeln('Февраль');
  end
else
    if (13+4+YearCode) mod 7=0 then writeln('Февраль');
if (13+1+YearCode) mod 7=6 then writeln('Октябрь');
if (13+2+YearCode) mod 7=6 then writeln('Май');
if (13+3+YearCode) mod 7=6 then writeln('Август');
if (13+4+YearCode) mod 7=6 then writeln('Март');
if (13+4+YearCode) mod 7=6 then writeln('Ноябрь');
if (13+5+YearCode) mod 7=6 then writeln('Июнь');
if (13+6+YearCode) mod 7=6 then writeln('Декабрь');
if (13+6+YearCode) mod 7=6 then writeln('Сентябрь');
if (13+0+YearCode) mod 7=6 then writeln('Апрель');
if (13+0+YearCode) mod 7=6 then writeln('Июль');
end.

//.NET вариант

uses
  system;

  const
  Day=13;
  n=12;

  Var
  Year,i:integer;
  ars:array[1..n] of string:=('Январь','Февраль','Март','Апрель','Май','Июнь','Июль','Август','Сентябрь','Октябрь','Ноябрь','Декабрь');
  ard:array[1..n] of DateTime;
begin
readln(Year);
for i:=1 to n do
  begin
    ard[i]:=ard[i].AddDays(Day-1);
    ard[i]:=ard[i].AddMonths(i-1);
    ard[i]:=ard[i].AddYears(Year-1);
    if ard[i].DayOfWeek.ToString='Friday' then writeln(ars[i]);
  end;
end.

Пример ввода:
2016
Пример вывода:
Май
ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика