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.

БПД БПД    1   30.09.2019 21:20    0

Ответы
bumar2 bumar2  09.10.2020 06:29

var i,j,n,k,k1,k2,k3: integer; bb: boolean;

a: array of integer;

begin

write('N = ');

readln(n);

if ((n mod 3 = 0) and (n<>0)) then begin

write('K1 = ');

readln(k1);

write('K2 = ');

readln(k2);

write('K3 = ');

readln(k3);

setlength(a,n);

for i:=0 to n-1 do begin

write('Заполним номер ',i+1,' -> ');

readln(a[i]);

end;

i:=0;

while (i<n) do

begin

a[i]:=k1-a[i];

a[i+1]:=k2-a[i+1];

a[i+2]:=k3-a[i+2];

inc(i,3);

end;

write('K = ');

readln(k);

for i:=0 to n-2 do

if (a[i]+a[i+1]>=k) then begin write('В комнатах ',i+1,' и ',i+2,' есть ',a[i]+a[i+1],' свободных мест'); bb:= true; end;

if (bb=false) then writeln(0);

end else writeln('Введите число кратное 3 и неравное 0');

readln;

end.

ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика