Другие языки программирования и технологии
Помогите решить задачу ПАСКАЛЬ!!!
Зная, что 1 октября 2017г это воскресение, определить какой день недели число n. (Число n вводится с клавиатуры)
Энштейн, Ньютон и Паскаль играли в прятки. Водить выпало Эйнштейну. Паскаль убежал в кусты, замаскировался, вообще не видно мужика, а вот Ньютон просто стоит. Нарисовал вокруг себя квадрат и стоит.
Эйнштейн досчитал до ста, поворачивается, видит Ньютона и кричит:
- Ура! Я нашел Ньютона!
Ньютон хитро улыбнувшись отвечает:
- Отсоси! Это Ньютон на квадратный метр! ТЫ НАШЕЛ ПАСКАЛЯ!!!
Эйнштейн досчитал до ста, поворачивается, видит Ньютона и кричит:
- Ура! Я нашел Ньютона!
Ньютон хитро улыбнувшись отвечает:
- Отсоси! Это Ньютон на квадратный метр! ТЫ НАШЕЛ ПАСКАЛЯ!!!
Вычисляем разницу дней:
d := n - 1;
Для 1 октября разница 0, это воскресенье.
Для 2 октября разница 1, это понедельник.
Для 3 октября разница 2, это вторник.
Для 4 октября разница 3, это среда.
Для 5 октября разница 4, это четверг.
Для 6 октября разница 5, это пятница.
Для 7 октября разница 6, это суббота.
Для 8 октября разница 7…
Слишком много.
Вычитаем из разницы 7, получаем 0, это воскресенье.
Для 9 октября разница 8, вычитаем 7, получаем 1, это понедельник.
А если у нас 16 октября?
Разница 15 дней. Много. Вычитаем 7, остается 8. Снова много!
Снова вычитаем 7, получаем 1. Это понедельник.
Иными словами, нужно разницу уменьшать на 7, пока она не станет меньше 7.
А после этого по разнице от 0 до 6 определить день недели, как я выше написал.
Вычитание семерки можно сделать циклом вроде такого:
while d >= 7 do
d := d - 7;
А можно без цикла просто поделить по модулю:
d := d mod 7;
И потом превратить эту разницу в день недели.
Например, с помощью оператора выбора:
case d of
0: day := 'Воскресенье';
1: day := 'Понедельник';
…
end;
WriteLn(day);
Не забудьте объявить все переменные.
d := n - 1;
Для 1 октября разница 0, это воскресенье.
Для 2 октября разница 1, это понедельник.
Для 3 октября разница 2, это вторник.
Для 4 октября разница 3, это среда.
Для 5 октября разница 4, это четверг.
Для 6 октября разница 5, это пятница.
Для 7 октября разница 6, это суббота.
Для 8 октября разница 7…
Слишком много.
Вычитаем из разницы 7, получаем 0, это воскресенье.
Для 9 октября разница 8, вычитаем 7, получаем 1, это понедельник.
А если у нас 16 октября?
Разница 15 дней. Много. Вычитаем 7, остается 8. Снова много!
Снова вычитаем 7, получаем 1. Это понедельник.
Иными словами, нужно разницу уменьшать на 7, пока она не станет меньше 7.
А после этого по разнице от 0 до 6 определить день недели, как я выше написал.
Вычитание семерки можно сделать циклом вроде такого:
while d >= 7 do
d := d - 7;
А можно без цикла просто поделить по модулю:
d := d mod 7;
И потом превратить эту разницу в день недели.
Например, с помощью оператора выбора:
case d of
0: day := 'Воскресенье';
1: day := 'Понедельник';
…
end;
WriteLn(day);
Не забудьте объявить все переменные.
Похожие вопросы
- Помогите решить задачу Паскаль
- помогите решить задачу паскаль срочно нужно ответ напишите
- Помогите решить задачу паскаль (за вознаграждение)
- Помогите решить задачу на Турбо паскале
- Помогите решить задачи по Паскалю
- помогите решить задачу на паскале: напечатать "столбиком" значения sin2, sin3, ..sin 20.
- Помогите решить задачу в паскале
- Помогите решить задачу на языке Паскаль. Найти сумму всех чётных чисел от 1 до 1000 (задачу решить 2 способами)
- Помогите решить задачу на паскале
- Помогите решить) Задачи по программированию в Паскале