Сформировать расписание экзаменов сессии в заданном году - PascalABC.NET
Формулировка задачи:
Сессия начинается в день d.m.g.. Для студентов специальности "Электронные системы " она состоит из N экзаменов. Первый экзамен приходится на второй день сессии. Между экзаменами - M дней подготовки. Сформировать расписание экзаменов сессии в заданном году.
Решение задачи: «Сформировать расписание экзаменов сессии в заданном году»
textual
Листинг программы
var
d, m, g, k, i, n, feb: integer;
l: string;
begin
Writeln('В какой день начинаєтся сессия?');
readln(d, m, g);
Writeln('Количество экзаменов');
readln(n);
Writeln('Количество дней для подготовки');
readln(k);
if g mod 4 = 0 then feb := 29 else feb := 28;
d := d + 1;
if d < 10 then l := ' ' else l := '';
writeln(l, d, '.', m, '.', g);
for i := 2 to n do
begin
case m of
1, 3, 5, 7, 8, 10, 12:
begin
d := d + k;
if d > 31 then m := m + 1;
if d > 31 then d := d - 31;
if m = 13 then g := g + 1;
if m = 13 then m := 1;
if m = 13 then m := 1;
if d < 10 then l := ' ' else l := ' ';
end;
4, 6, 9, 11:
begin
d := d + k;
if d > 30 then m := m + 1;
if d > 30 then d := d - 30;
if d < 10 then l := ' ' else l := ' ';
end;
2:
begin
d := d + k;
if d > feb then m := m + 1;
if d > feb then d := d - feb;
if d < 10 then l := ' ' else l := ' ';
end;
end;
writeln(l, d, '.', m, '.', g);
end;
end.
Объяснение кода листинга программы
- Переменная
dинициализируется значением дня месяца, в котором начинается сессия. - Переменная
mинициализируется значением месяца, в котором начинается сессия. - Переменная
gинициализируется значением года, в котором начинается сессия. - Переменная
kинициализируется количеством дней для подготовки к экзаменам. - Переменная
nинициализируется количеством экзаменов. - Если год високосный, то значение переменной
febустанавливается равным 29, иначе 28. - Значение переменной
dувеличивается на 1. - Если значение переменной
dменьше 10, то переменнаяlустанавливается равной`. иначе`. - Выводится текущее значение переменных
d,m,g. - Запускается цикл
for i := 2 to n, который выполняет следующие действия: - В зависимости от значения переменной
mвыполняются различные действия: - Если значение переменной
mравно 1, 3, 5, 7, 8, 10, 12, то выполняются следующие действия:- Значение переменной
dувеличивается на количество дней для подготовки. - Если значение переменной
dбольше 31, то значение переменнойmувеличивается на 1. - Если значение переменной
dбольше 31, то значение переменнойdуменьшается на 31. - Если значение переменной
mравно 13, то значение переменнойgувеличивается на 1. - Если значение переменной
mравно 13, то значение переменнойmуменьшается на 1. - Если значение переменной
mравно 13, то значение переменнойmуменьшается на 1. - Если значение переменной
dменьше 10, то переменнаяlустанавливается равной, иначе.
- Значение переменной
- Если значение переменной
mравно 4, 6, 9, 11, то выполняются следующие действия:- Значение переменной
dувеличивается на количество дней для подготовки. - Если значение переменной
dбольше 30, то значение переменнойmувеличивается на 1. - Если значение переменной
dбольше 30, то значение переменнойdуменьшается на 30. - Если значение переменной
dменьше 10, то переменнаяlустанавливается равной, иначе.
- Значение переменной
- Если значение переменной
mравно 2, то выполняются следующие действия:- Значение переменной
dувеличивается на количество дней для подготовки. - Если значение переменной
dбольше февральского количества дней, то значение переменнойmувеличивается на 1. - Если значение переменной
dбольше февральского количества дней, то значение переменнойdуменьшается на февральское количество дней. - Если значение переменной
dменьше 10, то переменнаяlустанавливается равной, иначе.
- Значение переменной
- Выводится текущее значение переменных
d,m,g.