Школы

Перечислить в паскале...

У меня возникла проблема при решении одной задачи.
Мне нужно что бы программа определяла при вводе дня года какой это день: выходной или будний. Так вот, я использовал case of для этого и вышло примерно вот что
1..5: writeln('будний')
6..7:writeln('выходной')
Проблема в том, что придётся перечислять все 365 дней, а это очень долго и ...
Вообщем кто знает помогите пожалуйста.
Учи математику!
Зачем перечислять?
В году 365 дней, в неделе 7 дней: 5 рабочих и 2ва выходных. Не наводит на мысль?
Если не считать праздники, а только обычные рабочие и выходные ( суббота+воскресенье) , то
Var
k: Integer;
BEGIN
Repeat
Write('Введите K: ');
Readln(k);
until (1<=k) and (k<365);
Case k mod 7 of
1..5: Writeln('Рабочий день');
6,0: Writeln('Выходной день');
end;
END.
Баян Жоламанова
Баян Жоламанова
98 963
Лучший ответ
Лариса Носенко Многих команд ещё не знаю, пару дней назад учить начал.
Спасибо за помощь!
А перед caseof надо вставить ещё несколько строк. Я их честно стырил:
"1. Обозначим число, месяц и год соответственно d, m и y.
2. Если m ≤ 2 (т. е. месяц январь или февраль) , то год уменьшим на 1, а число увеличим на 3:
y:= y–1;
d:= d+3;
3. Теперь номер дня недели (w) вычисляется по следующей формуле:
w:= 1 + [d + y + y/4 – y/100 + y/400 + (31m+10)/12] mod 7;
(все операции деления — целочисленные, т. е. берется целая часть частного; mod — операция получения остатка от деления) .
Результатом будет целое число в диапазоне от 1 до 7, соответствующее дням недели от воскресенья до субботы (1 — понедельник, 2 — вторник, 3 — среда, 4 — четверг, 5 — пятница, 6 — суббота, 7 — воскресенье) .

"
Наталья Лаврик
Наталья Лаврик
48 066
Какие данные использует программа? Вводится год и номер дня или дата?
---
Тогда не представляю, как она может определить день. Например, 365-й день 2010го года выпадал на рабочий, 2011го - на выходной.
Если же нужно сделать программу для 2013-го года, то проще всего от номера дня отнять 5 и проверить, какой остаток от деления на 7, если 0 - то выходной (суббота) . Если нет, то от номера дня отнять 6 и проверить, какой остаток от деления на 7, если 0 - то выходной (воскресенье) . Если остаток всё равно не 0, то это будний день.

А ниже с циклом, мне кажется, очень неоптимальный алгоритм.
Лариса Носенко Просто номер дня