У меня возникла проблема при решении одной задачи.
Мне нужно что бы программа определяла при вводе дня года какой это день: выходной или будний. Так вот, я использовал 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.
Зачем перечислять?
В году 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.
А перед 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 — воскресенье) .
"
"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 — воскресенье) .
"
Какие данные использует программа? Вводится год и номер дня или дата?
---
Тогда не представляю, как она может определить день. Например, 365-й день 2010го года выпадал на рабочий, 2011го - на выходной.
Если же нужно сделать программу для 2013-го года, то проще всего от номера дня отнять 5 и проверить, какой остаток от деления на 7, если 0 - то выходной (суббота) . Если нет, то от номера дня отнять 6 и проверить, какой остаток от деления на 7, если 0 - то выходной (воскресенье) . Если остаток всё равно не 0, то это будний день.
А ниже с циклом, мне кажется, очень неоптимальный алгоритм.
---
Тогда не представляю, как она может определить день. Например, 365-й день 2010го года выпадал на рабочий, 2011го - на выходной.
Если же нужно сделать программу для 2013-го года, то проще всего от номера дня отнять 5 и проверить, какой остаток от деления на 7, если 0 - то выходной (суббота) . Если нет, то от номера дня отнять 6 и проверить, какой остаток от деления на 7, если 0 - то выходной (воскресенье) . Если остаток всё равно не 0, то это будний день.
А ниже с циклом, мне кажется, очень неоптимальный алгоритм.
Лариса Носенко
Просто номер дня
Похожие вопросы
- паскаль
- перечислите основные человеческие расы и назовите признаки,по которым они различаются!!
- Перечислить ОСНОВНЫЕ изобретения конца 19 века начала 20 века.
- в ходе ВОв советские вооруженные силы провели 6 гигантских битв. перечислите их. перечислите их
- Перечислите обстоятельства, факты, которые позволили именно Сардинскому королевству объединить Италию.
- Информатика паскаль
- Язык программирования паскаль. Какое у него происхождение названия?
- Объясните в программе Паскаль, откуда взялись строки.
- Скажите пожалуйста, сколько нечётных чисел в треугольнике Паскаля на 32 строке
- Как написать программу???? Нужно в паскале
Спасибо за помощь!