Вопрос задан 17.04.2021 в 10:06. Предмет Информатика. Спрашивает Хилус Яков.

составьте программу, которая, учитывая наименование года и день недели соответствующий 1 января,

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

Ответы на вопрос

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Симанков Данил.
//Можно и без дня недели пятницы
//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
Пример вывода:
Май
0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

Конечно, я могу помочь вам с написанием такой программы на Pascal ABC. Вот возможное решение:

sql
program 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 число на пятницу. Если да, то программа выводит наименование соответствующего месяца.

Надеюсь, это поможет вам решить вашу задачу!

0 0

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос