1. Главная
  2. Библиотека
  3. Программирование
  4. Написать программу, которая по дате определяет день нед...
Разбор задачи

Написать программу, которая по дате определяет день недели, на который приходится эта дата. Для вычисления дня недели использовать следующую формулу: где d – число месяца, m – номер месяца, если начинать счет с марта, как это делали в Древнем Риме (март –

  • Предмет: Программирование
  • Автор: Кэмп
  • #Основы алгоритмизации и программирования
  • #Языки программирования (C++, Java, Python и др.)
Написать программу, которая по дате определяет день недели, на который приходится эта дата. Для вычисления дня недели использовать следующую формулу: где d – число месяца, m – номер месяца, если начинать счет с марта, как это делали в Древнем Риме (март –

Условие:

Написать программу, которая по дате определяет день недели, на который приходится эта дата. Для вычисления дня недели использовать следующую формулу:

$ \left( d + \left[ \frac{13(m+1)}{5} \right] + Y + \left[ \frac{Y}{4} \right] + \left[ \frac{c}{4} \right] - 2c \right) \bmod 7 $

где d – число месяца, m – номер месяца, если начинать счет с марта, как это делали в Древнем Риме (март – 1, апрель – 2, …, февраль – 12), Y – номер года в столетии, c – количество столетий. Квадратные скобки означают, что надо взять целую часть от значения, находящегося в скобках. Вычисленное по формуле значение определяет день недели: 1 – понедельник, 2 – вторник, …, 0 – воскресенье. При написании программы использовать оператор выбора.

Решение:

Обратите внимание, что в этой задаче месяц считается от марта, то есть:
• март – 1,
• апрель – 2,
• …
• декабрь – 10,
• январь – 11,
• февраль –
12.

При этом, если исходный месяц – январь или февраль, необходимо уменьшить год на 1 (так, например, 1 января 2000 года по Римскому счёту будет относиться к 1999 году).

Общая формула для вычисления дня недели выглядит так:

  R = ( d + [13*(m + 1)/5] + Y + [Y/4] + [c/4] – c ) mod 7

где
  d – число месяца,
  m – порядковый номер месяца по римской схеме (март=1, …, февраль=12),
  Y – год внутри столетия (последние две цифры года),
  c – количество столетий (первая часть года).
Квадратные скобки означают взятие целой части от результата деления. Результат R определяет день недели следующим образом:
  1 – понедельник, 2 – вторник, 3 – среда, 4 – четверг, 5 – пятница, 6 – суббота, 0 – воскресенье.

Ниже приведён пошаговый разбор программы:

─────────────────────────────

  1. Ввод данных
    Программа запрашивает у пользователя число, месяц и год.
    ─────────────────────────────
  2. Преобразование месяца
    Если вводимый месяц — январь (1) или февраль (2), то по условию римской системы нужно прибавить 10, чтобы получить значение 11 или 12 соответственно, а также уменьшить год на 1. Если месяц от марта до декабря, то новое значение месяца получаем как (m – 2):
      – для марта: 3–2 = 1
      – для апреля: 4–2 = 2 и т.д.
    ─────────────────────────────
  3. Вычисление величин Y и c
    После приведения месяца корректируем год:
      Y = (корректированный год) % 100 (год в столетии)
      c = (корректированный год) / 100
    ─────────────────────────────
  4. Вычисление по формуле
    Вычисляем по шагам:
      – term1 = [13*...

Внутри — полный разбор, аргументация, алгоритм решения, частые ошибки и как отвечать на каверзные вопросы препода, если спросит

Попробуй решить по шагам

Попробуй один шаг и продолжи в режиме обучения или посмотри готовое решение

В чём заключается ключевая особенность преобразования месяца и года при использовании формулы для определения дня недели, если исходный месяц — январь или февраль?

Что нужно знать по теме:

Что нужно знать по теме

Алгоритм решения

Топ 3 ошибок

Что спросит препод

Выбери предмет