
Вопрос задан 17.04.2021 в 10:06.
Предмет Информатика.
Спрашивает Хилус Яков.
составьте программу, которая, учитывая наименование года и день недели соответствующий 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.
Пример ввода:
2016
Пример вывода:
Май
//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
Пример вывода:
Май



Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.
Конечно, я могу помочь вам с написанием такой программы на Pascal ABC. Вот возможное решение:
sqlprogram Friday13;
var
year, century, dayOfWeek, firstDayOfYear: integer;
const
daysPerWeek = 7;
monthsPerYear = 12;
friday = 5;
jan = 1;
apr = 4;
jun = 6;
sep = 9;
nov = 11;
function IsLeapYear(year: integer): boolean;
begin
Result := (year mod 4 = 0) and ((year mod 100 <> 0) or (year mod 400 = 0));
end;
function GetFirstDayOfYear(year: integer): integer;
var
century, yearInCentury: integer;
begin
century := year div 100;
yearInCentury := year mod 100;
Result := (1 + 5 * century + (century div 4) + yearInCentury + (yearInCentury div 4)) mod daysPerWeek;
end;
function GetMonthDays(month, year: integer): integer;
begin
case month of
jan, mar, may, jul, aug, oct, dec:
Result := 31;
apr, jun, sep, nov:
Result := 30;
2:
if IsLeapYear(year) then
Result := 29
else
Result := 28;
end;
end;
procedure PrintFriday13Months(year, firstDayOfYear: integer);
var
month, monthDay, dayOfYear: integer;
begin
writeln('Months with Friday the 13th in ', year, ':');
dayOfYear := 13;
for month := 1 to monthsPerYear do
begin
if (dayOfWeek + dayOfYear - 1) mod daysPerWeek = friday then
begin
case month of
jan:
writeln(' January');
apr:
writeln(' April');
jul:
writeln(' July');
sep:
writeln(' September');
nov:
writeln(' November');
end;
end;
monthDay := GetMonthDays(month, year);
dayOfYear := dayOfYear + monthDay;
end;
end;
begin
write('Enter year: ');
readln(year);
century := year div 100;
dayOfWeek := (1 + 5 * century + (century div 4)) mod daysPerWeek;
firstDayOfYear := GetFirstDayOfYear(year);
PrintFriday13Months(year, firstDayOfYear);
end.
Программа запрашивает у пользователя год и вычисляет день недели, соответствующий 1 января этого года. Затем она проходит через все месяцы года, подсчитывая количество дней в каждом месяце и проверяя, выпадает ли 13 число на пятницу. Если да, то программа выводит наименование соответствующего месяца.
Надеюсь, это поможет вам решить вашу задачу!


Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
Предметы
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili