Найти все годы в данном столетии с одинаковым календарем - Free Pascal

Узнай цену своей работы

Формулировка задачи:

Есть такое свойство календаря. Он повторяется каждые 28 лет. Это объясняется тем, что в году 52 недели и один день, если бы не было високосных лет. Тогда бы календарь повторялся через каждые 7 лет. Но в високосном году 52 недели и два дня. Високосные годы повторяются один раз в четыре года. "Лишние" дни превращаются в неделю за 7 лет, значит, получается 7 * 4 = 28. В 28-ми годах получается целое число недель. Программе задаётся некоторый год, она находит все годы в данном столетии, календарь который будет совпадать с календарём заданного года.

Решение задачи: «Найти все годы в данном столетии с одинаковым календарем»

textual
Листинг программы
var century, year, prev : integer;
begin
  readln(year);
  century := (year div 100) * 100;
  year := (year mod 100 mod 28) + century;
  repeat
    writeln(year);
    prev := year;
    year := ((year mod 100) + 28) mod 100 + century;
  until year < prev;
end.

Объяснение кода листинга программы

  1. Вводится текущий год.
  2. Вычисляется век, в котором находится текущий год.
  3. Текущий год приводится к виду, в котором он будет выводиться.
  4. Начинается цикл, который будет повторяться до тех пор, пока не будет выведено число меньше предыдущего.
  5. В цикле выводится текущий год.
  6. При каждой итерации цикла текущий год увеличивается на 28 или 29, в зависимости от того, какой год был текущим.
  7. Цикл завершается, когда текущий год становится меньше предыдущего.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4 из 5
Похожие ответы