Работы учащихся Решение сложных задач по программированию | Page 9
© Иванов Дмитрий, МБОУ «Лицей № 2», г. Нижневартовск
Задача № 8
На вход программе подаются сведения о ячейках камеры хранения багажа. В первой строке – текущая
дата – день (ровно две цифры, от 01 до 31), затем через точку – месяц (ровно две цифры, от 01 до 12).
Во второй строке сообщается количество занятых ячеек N (не меньше 3, но не больше 1000). Каждая
из следующих строк имеет формат:
<номер ячейки> <дата сдачи багажа>
Номер ячейки – это целое число, дата – 5 символов: день (ровно две цифры, от 01 до 31), затем через
точку – месяц (ровно две цифры, от 01 до 12). Сведения отсортированы по номерам ячеек. Все даты
относятся к одному календарному году. Считать, что в феврале 28 дней.
Нужно вывести номера тех ячеек, в которых багаж хранится более 3 дней в хронологическом порядке
сдачи багажа. Например, если исходные данные были такие:
04.06
3
1000 01.06
1001 31.05
2007 21.05
то результат должен быть следующий:
2007
1001
Решение:
program bagazh;
uses crt;
var data,z,p:string;
N,i,x,er,ch,dni,l,q,w,e:integer;
a:array[1..100] of string;
begin
readln(data); readln(N);
val(copy(data,4,2),x,er);
case x of
1:dni:=31;
2:dni:=59;
3:dni:=90;
4:dni:=120;
5:dni:=151;
6:dni:=181;
7:dni:=212;
8:dni:=243;
9:dni:=273;
10:dni:=304;
11:dni:=334
else dni:=365 end;
val(co py(data,1,2),x,er);
dni:=dni+x; l:=1;
for i:=1 to N do begin
readln(z); val(copy(z,9,2),x,er);
case x of
1:ch:=31;
2:ch:=59;
3:ch:=90;
4:ch:=120;
5:ch:=151;
6:ch:=181;
7:ch:=212;
8:ch:=243;
9:ch:=273;
10:ch:=304;
11:ch:=334
else ch:=365 end;
val(copy(z,6,2),x,er);
ch:=ch+x; str(ch,p);
if ch>dni then if (ch-dni)>3 then begin
a[l]:=copy(z,1,4) + p ; l:=l+1
end;
if dni>ch then
if (dni-ch)>3 then begin
a[l]:=copy(z,1,4) + p; l:=l+1
end;
end;
for i:=1 to l-2 do begin er:=i;
for N:=i+1 to l-1 do begin
val(copy(a[N],5,length(a[N])-4),q,e);
val(copy(a[er],5,length(a[er])-4),w,e);
if q > w then er:=N; end;
if i<>er then begin
data:=a[i];a[i]:=a[er];a[er]:=data;
end; end;
for i:=1 to l-1 do
writeln(copy(a[i],1,4)); end.
май, 2015 г.