М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации
BOSS653
BOSS653
15.03.2021 09:57 •  Информатика

На вход программе на паскале вводится дата в виде `3` чисел: день, месяц, год. Вывести какой это день недели.

👇
Ответ:
erkinsultanov
erkinsultanov
15.03.2021
Хорошо, давайте решим эту задачу пошагово.

1. Сначала нам нужно получить три числа от пользователя – день, месяц и год. Для этого мы можем использовать встроенную функцию `readln` в Pascal.

```
var
day, month, year: integer;

writeln('Введите день:');
readln(day);
writeln('Введите месяц:');
readln(month);
writeln('Введите год:');
readln(year);
```

2. После получения входных данных мы можем использовать формулу Зеллера для определения дня недели. Здесь важно заметить, что формула Зеллера работает только с определенными значениями месяца и года:

- Если месяц январь или февраль, то мы должны вычесть 1 из года и прибавить 12 к месяцу, чтобы получить правильное значение для формулы.
- Для формулы требуется двузначное представление года, поэтому мы должны взять только последние две цифры года. Например, для года 1987 мы будем использовать 87.
- Обратите внимание, что в формуле январь и февраль считаются 13 и 14 месяцами предыдущего года соответственно.

```
if month = 1 then
begin
month := 13;
year := year - 1;
end
else if month = 2 then
begin
month := 14;
year := year - 1;
end;

var
yearToDisplay: integer;

yearToDisplay := year mod 100;
```

3. Теперь мы можем использовать формулу Зеллера для определения дня недели. Эта формула выглядит следующим образом: `h = (q + (13*(m+1)/5) + K + (K/4) + (J/4) - 2*J) mod 7`, где:

- `h` - число соответствующее дню недели (0 – суббота, 1 – воскресенье, ..., 6 – пятница).
- `q` - день месяца.
- `m` - номер месяца.
- `K` - двузначное представление года (последние две цифры).
- `J` - первые две цифры года деленные на 100 (целая часть).

```
var
J, K, m: integer;

J := year div 100;
K := yearToDisplay;
m := month;
```

4. Выполним расчет с использованием формулы Зеллера:

```
var
h: integer;

h := (day + (13*(m+1)/5) + K + (K/4) + (J/4) - 2*J) mod 7;
```

5. Теперь у нас есть число `h`, соответствующее дню недели, но оно представлено в виде цифры от 0 до 6. Чтобы вывести имя дня недели, мы можем использовать конструкцию `case`, чтобы выбрать соответствующий вариант:

```
writeln('День недели:');
case h of
0: writeln('Суббота');
1: writeln('Воскресенье');
2: writeln('Понедельник');
3: writeln('Вторник');
4: writeln('Среда');
5: writeln('Четверг');
6: writeln('Пятница');
end.
```

Теперь наша программа будет запрашивать дату в формате `день, месяц, год` и выводить соответствующий день недели.
4,6(71 оценок)
Проверить ответ в нейросети
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ