Pascal abc.В некоторой гостинице для имеются K1, K2, K3-местные номера (от 1 до 4 меств номере). На каждом этаже типы номеров чередуются:1) первая комната - K1-местный номер;2) вторая комната - K2-местный номер;3) третья комната - K3-местный номер;4) четвертая комната - K1-местный номер;5) пятая комната - K2-местный номер;6) шестая комната - K3-местный номер и т. д.Количество комнат N на этаже гостиницы кратно 3, то есть N равно 6, 9, 12 и т. д. Всистеме управления занятыми местами каждой комнате соответствует элемент массива А,в котором записано количество занятых мест. НапримерN = 9, K1 = 2, K2 = 4, K3 = 3.Заселение 9 номеров на одном из этажейA[1]=2 (свободных мест в двухместном номере нет);A[2]=1 (три места в четырехместном номере свободны);A[3]=0 (все три места в трехместном номере свободны);A[4]=1 (одно место в двухместном номере свободно);A[5]=3 (одно место в четырехместном номере свободно);A[6]=2 (одно место в трехместном номере свободно);A[7]=0 (все места в двухместном номере свободны);A[8]=4 (все места в четырехместном номере заняты);A[9]=3 (все места в трехместном номере заняты);Левое крыло комнаты с номерами 1, 2, 3, 4.Правое крыло комнаты с номерами 6, 7, 8, 9.Комната с номером 5 посередине.Найти номера двух соседних комнат в которых не менее К свободных мест на всем этаже. Если таких комнат нет, то вывести 0, если есть, то вывести номера этих комнат.Например, если К=6, то номерамисоседних комнат с общим количеством свободных мест в соседних номерах будут 2 и 3.

9 Сен 2019 в 02:42
225 +1
0
Ответы
1

Для решения данной задачи можно использовать следующий алгоритм:

Пройти по всем комнатам на этаже, начиная с первой комнаты.Для каждой комнаты проверить, есть ли в ней не менее К свободных мест.Если необходимое количество свободных мест есть, проверить следующую комнату (по часовой стрелке).Если найдены две соседние комнаты с необходимым количеством свободных мест, вывести их номера и завершить выполнение алгоритма.Если ни одна пара соседних комнат с необходимым количеством свободных мест не найдена, вывести 0.

Пример реализации данного алгоритма на языке Pascal:

program HotelRooms;
const
N = 9;
K1 = 2;
K2 = 4;
K3 = 3;
K = 6;
var
A: array[1..N] of Integer;
i, room1, room2: Integer;
begin
// Инициализация массива A (занятые места в комнатах)
A[1] := 2;
A[2] := 1;
A[3] := 0;
A[4] := 1;
A[5] := 3;
A[6] := 2;
A[7] := 0;
A[8] := 4;
A[9] := 3;
// Поиск двух соседних комнат с необходимым количеством свободных мест
for i := 1 to N do
begin
if (i+1 <= N) and (abs(A[i] - K) >= 0) and (abs(A[i+1] - K) >= 0) and (abs(A[i] - K) + abs(A[i+1] - K) >= K) then
begin
room1 := i;
room2 := i+1;
break;
end;
end;
// Вывод результата
if (room1 <> 0) and (room2 <> 0) then
writeln('Найдены комнаты с номерами ', room1, ' и ', room2)
else
writeln('Таких комнат не найдено');
end.

При запуске данной программы на примере, указанном в тексте, результат выведет "Найдены комнаты с номерами 2 и 3", что соответствует условиям задачи.

20 Апр в 02:24
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 83 722 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир