Материалы
Задание
В кассу на почте выстраивается очередь. Пока кассир обслуживает одного клиента, в очередь подходят еще трое. На обслуживание одного клиента уходит K секунд.
Кассир работает ровно T часов, потом идет обедать. Определите, сколько клиентов останется в очереди к началу обеда? Кто будет находится на кассе а начало обеда? Какой id будет у клиента, который окажется последним в очереди к началу обеда?
Формат входных данных
на ввод подаются сперва K - количество секунд на обслуживание одного клиента, затем T - время работы кассира в часах.
Формат выходных данных
В первой строчке вывести количество клиентов в очереди.
Во второй строчке вывести номер клиента, который окажется в начале очереди.
В третьей строчке вывести номер клиента, который окажется в конце очереди.
Клиенты нумеруются по порядку, начиная с 1.
Разбор задания
В цикле будем отсчитывать время работы кассира шагами по K секунд, пока оно будет меньше чем введенное значение T.
На каждой итерации цикла в очередь будут подходить три человека, а обслуживаться - один. Значит на каждой итерации нам следует добавить три элемента в очередь и удалить один, стоящий первым. При этом номер добавляемого клиента каждый раз будет увеличиваться на 1.
По окончании времени работы, выведем номер, хранящийся по указателю на первый и последний элемент.
Подсчитаем количество элементов в очереди и выведем его.
{Процедура добавления элемента в очередь}
Клиенты нумеруются по порядку, начиная с 1.
Разбор задания
В цикле будем отсчитывать время работы кассира шагами по K секунд, пока оно будет меньше чем введенное значение T.
На каждой итерации цикла в очередь будут подходить три человека, а обслуживаться - один. Значит на каждой итерации нам следует добавить три элемента в очередь и удалить один, стоящий первым. При этом номер добавляемого клиента каждый раз будет увеличиваться на 1.
По окончании времени работы, выведем номер, хранящийся по указателю на первый и последний элемент.
Подсчитаем количество элементов в очереди и выведем его.
{Процедура добавления элемента в очередь}
{Объявление типа очередь}
Type
PQueue = ^Queue;
Queue = record
Data : integer;
Next : PQueue;
end;
{Процедура добавления элемента в очередь}
Procedure AddElement(Var BeginQ, EndQ : PQueue; c : integer);
Var
u : PQueue;
Begin
new(u);
u^.Data := c;
u^.Next := Nil;
if BeginQ = Nil {проверяем, пуста ли очередь}
then
BeginQ := u {ставим указатель начала очереди на первый созданный элемент}
else
EndQ^.Next := u; {ставим созданный элемент в конец очереди}
EndQ := u; {переносим указатель конца очереди на последний элемент}
End;
Type
PQueue = ^Queue;
Queue = record
Data : integer;
Next : PQueue;
end;
{Процедура добавления элемента в очередь}
Procedure AddElement(Var BeginQ, EndQ : PQueue; c : integer);
Var
u : PQueue;
Begin
new(u);
u^.Data := c;
u^.Next := Nil;
if BeginQ = Nil {проверяем, пуста ли очередь}
then
BeginQ := u {ставим указатель начала очереди на первый созданный элемент}
else
EndQ^.Next := u; {ставим созданный элемент в конец очереди}
EndQ := u; {переносим указатель конца очереди на последний элемент}
End;
{Процедура удаления элемента из очереди}
procedure RemoveElement(Var BeginQ, EndQ : PQueue);
Var
u, v : PQueue;
Begin
u := BeginQ;
if BeginQ = Nil {проверяем, пуста ли очередь}
then
writeln('Очередь пуста')
else
begin
u:=BeginQ;
BeginQ := BeginQ^.Next;
dispose(u);
if BeginQ = nil then EndQ := nil;
end;
End;
Домашнее задание
В кассу на почте выстроилась очередь. Пока кассир обслуживает одного клиента, в очередь подходят еще трое. На обслуживание одного клиента уходит K секунд.
Кассир работает ровно T часов, потом идет обедать. Определите, сколько клиентов останется в очереди к началу обеда? Кто будет находится на кассе а начало обеда? Какой id будет у клиента, который окажется последним в очереди к началу обеда?
Формат входных данных
на ввод подаются сперва K - количество секунд на обслуживание одного клиента, затем T - время работы кассира в часах.
После этого начинают вводится id клиентов пока не кончится время. (id - строка из букв латинского алфавита и цифр длиной не более 5 символов)
После этого начинают вводится id клиентов пока не кончится время. (id - строка из букв латинского алфавита и цифр длиной не более 5 символов)
Формат выходных данных
В первой строчке вывести количество клиентов в очереди.
Во второй строчке вывести id клиента, который окажется в начале очереди.
В третьей строчке вывести id клиента, который окажется в конце очереди.