Разработать функцию, описывающую поселение отдельного туриста - Turbo Pascal

Узнай цену своей работы

Формулировка задачи:

В гостиницу прибыла группа из M туристов. Каждый турист хочет занять номер определенной категории (с душем, с ванной, люкс) и должен быть поселен в отдельный номер. Для поселения администратор располагает перечнем свободных номеров с указанием их категории. Разработать функцию, описывающую поселение отдельного туриста при следующих предположениях: функция вырабатывает значение «ИСТИНА», если турист размешен в номере требуемой категории (при этом указывается номер, в который он поселен); функция вырабатывает значение «ЛОЖЬ», если турист на может быть поселен в номер требуемой категории. Разработать программу, описывающую алгоритм работы администратора по заселению группы. Программа должна вырабатывать перечень номеров, оставшихся свободными после окончания поселения и перечень туристов оставшихся не поселенными Никак не получается ее сделать... Надеюсь, что вы мне поможете. Заранее спасибо

Решение задачи: «Разработать функцию, описывающую поселение отдельного туриста»

textual
Листинг программы
program gost;
uses crt;
{funkcia zaselenia}
 
function nomer(tip,svan,sdush,luks,komn:integer):string;
begin
if (tip=1)and(sdush>0) then
begin
nomer:='istina';
end
else
begin
if (tip=2)and(svan>0) then
begin
nomer:='istina';
end
else
begin
if (tip=3)and(luks>0) then
begin
nomer:='istina';
end
else nomer:='lozno';
end;
end;
end;
 
{osnovnoi kod}
 
const kolnom=10;
var ludi:array [1..10] of string; nomera:array [1..500] of integer;
 tipnom:array[1..500] of integer; zapros:array[1..10] of integer;
 nezas:array[1..10] of string; nomzas:array [1..500] of integer;
pos:string; i,j,M,nsv,nsd,nl,nt:integer;
begin
randomize;
nt:=1;
nsv:=0;
nsd:=0;
nl:=0;
j:=0;
write('kol-vo turistov=>>');readln(M);
writeln('vvod svobodnih nomerov');
for i:=1 to kolnom do
begin
nomera[i]:=i;
write('nomer =>>',nomera[i]);
 
nomzas[i]:=0;
end;
writeln('vvod tipov nomerov:1-nomer s dushem/2-nomer s vannoi/3-nomer luks');
for i:=1 to kolnom do
begin
write('tip nomera (',i,') =>');readln(tipnom[i]);
case tipnom[i] of
1:nsd:=nsd+1;
2:nsv:=nsv+1;
3:nl:=nl+1;
end;
end;
writeln('vvod imien i zaprosov');
for i:=1 to M do
begin
write('imia=>'); readln(ludi[i]);
write('tip=>'); readln(zapros[i]);
pos:=nomer(zapros[i],nsv,nsd,nl,nomera[i]);
if pos='istina' then
begin
while nt<kolnom+1  do
begin
if (tipnom[nt]=zapros[i])and(nomzas[nt]=0) then
begin
writeln('nomer =>',nomera[nt]);
nomzas[nt]:=1;
case zapros[i] of
1:nsd:=nsd-1;
2:nsv:=nsv-1;
3:nl:=nl-1;
end;
nt:=kolnom+1;
end
else nt:=nt+1;
end;
nt:=1;
end
else
begin
j:=j+1;
 nezas[j]:=ludi[i];
 end;
end;
writeln('nezaselennie turisti');
if j>0 then
begin
for i:=1 to j do
begin
writeln('imia =>> ',nezas[i]);
end;
end;
writeln('empty rooms');
for i:=1 to kolnom do
begin
if nomzas[i]=0 then writeln('nezaselennii nimer =>>',nomera[i]);
end;
end.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 3.667 из 5
Похожие ответы