составьте программу, которая, учитывая наименование года и день недели соответствующий 1 января, выводит на экран наименования месяцев в которых число 13 выпадет на пятницу (программа pascal abc) срочно надо, не понимаю как составить(
//Можно и без дня недели пятницы //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.
Answers & Comments
Verified answer
//Можно и без дня недели пятницы//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
Пример вывода:
Май