
Напишите программу нахождения дня недели по номеру дня в ноябре текущего года в паскаль (60 баллов)


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

var
d:integer;
begin
//Ноябрь 2021г.
write('Введите число(1..30): '); readln(d);
case d mod 7 of
1: write('Пн');
2: write('Вт');
3: write('Ср');
4: write('Чт');
5: write('Пт');
6: write('Сб');
else write('Вс')
end;
end.



Для решения этой задачи вам понадобится использовать алгоритм Zeller для вычисления дня недели. Этот алгоритм основан на свойствах календаря и может быть реализован на любом языке программирования, включая Pascal.
Вот шаги, которые вам нужно выполнить:
1. Определите переменные для дня, месяца и года. В данном случае, день будет введен пользователем, а месяц и год будут текущими.
2. Используйте алгоритм Zeller для вычисления дня недели. Этот алгоритм выглядит следующим образом:
- Если месяц равен 1 (январь), 2 (февраль) или 12 (декабрь), то уменьшите его на 1 и увеличьте год на 1. - Если месяц равен 3 (март), 4 (апрель), 5 (май), 6 (июнь), 7 (июль), 8 (август), 9 (сентябрь) или 10 (октябрь), то не меняйте их. - Если месяц равен 11 (ноябрь), то установите его в 12 и установите год в предыдущий.
3. Вычислите х (h) по формуле: h = (q + [13(m+1)/5] + K + [K/4] + [J/4] - 2J) mod 7, где: - q - это день месяца, - m - это месяц, - K - это год, если он не високосный, и K - 1, если он високосный, - J - это год, если он не високосный, и J - 1, если он високосный.
4. Если h равен 0, то день недели - суббота. Если h равен 1, то день недели - воскресенье. Если h равен 2, то день недели - пятница, и так далее.
Вот пример кода на Pascal, который реализует этот алгоритм:
```pascal program DayOfWeek; var day, month, year, h, K, J: integer; begin writeln('Введите номер дня в ноябре:'); readln(day); month := 11; year := 2023; if (year mod 4 = 0) and (year mod 100 <> 0) or (year mod 400 = 0) then K := 1 else K := 2; J := year; if month < 3 then begin month := month + 12; year := year - 1; end; h := (day + [13 * (month + 1) / 5] + K + [K / 4] + [J / 4] - 2 * J) mod 7; case h of 0: writeln('Суббота'); 1: writeln('Воскресенье'); 2: writeln('Понедельник'); 3: writeln('Вторник'); 4: writeln('Среда'); 5: writeln('Четверг'); 6: writeln('Пятница'); end; end. ```
Этот код сначала запрашивает у пользователя номер дня в ноябре. Затем он вычисляет год K и J. Если месяц меньше 3, то он увеличивается на 12, и год уменьшается на 1. Затем вычисляется h по формуле алгоритма Zeller. Наконец, код выводит день недели, соответствующий значению h.


Похожие вопросы







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







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