const famlist:array[1..4] of string=('Сапожников',
'Токарев',
'Музыкантов',
'Кузнецов');
proflist:array[1..4] of string=('сапожник',
'токарь',
'музыкант',
'кузнец');
var fams:array[1..4] of integer; {Распределение фамилия по профессииям}
fam_busy:array[1..4] of boolean; {Занята ли фамилия}
i:1..4;
begin
{Очищаем массивы}
for i:=1 to 4 do
begin
fams[i]:=0;
fam_busy[i]:=false;
end;
{Перебираем фамилии сапожника, начиная с Токарев (Сапожников пропускаем)}
fams[1]:=2;
while fams[1]<= 4 do
begin
{Помечаем выбранную фамилию, как занятую}
fam_busy[fams[1]]:=true;
{Перебираем фамилии токаря}
fams[2]:=1;
while fams[2]<=4 do
begin
{Если выбранная фамилия не занята и не совпадает с профессией
и не Кузнецов}
if not fam_busy[fams[2]] and (fams[2]<>2) and (fams[2]<>4)
then begin
{Помечаем выбранную фамилию, как занятую}
fam_busy[fams[2]]:=true;
{Перебираем фамилии музыканта}
fams[3]:=1;
while fams[3]<= 4 do
begin
{Если выбранная фамилия не занята
и не совпадает с профессией}
if not fam_busy[fams[3]] and (fams[3]<>3) then
begin
{Помечаем выбранную фамилию, как занятую}
fam_busy[fams[3]]:=true;
{Перебираем фамилии кузнеца}
fams[4]:=1;
while fams[4]<=3 do
begin
{Если выбранная фамилия не занята}
if not fam_busy[fams[4]]
{фамилия сапожника не соответствует
профессии Музыкантова}
and (fams[fams[1]]<>3)
{фамилия токаря не соответствует
профессии Токарева}
and (fams[fams[2]]<>2)
then begin
{Выводим соответствия профессий и фамилий}
for i:=1 to 4 do writeln(proflist[i],' - ',famlist[fams[i]]);
writeln('---');
end;
{Следующая фамилия}
fams[4]:=fams[4]+1;
end;
{Освобождаем рассмотренную фамилию}
fam_busy[fams[3]]:=false;
end;
{Следующая фамилия}
fams[3]:=fams[3]+1
end;
{Освобождаем рассмотренную фамилию}
fam_busy[fams[2]]:=false;
end;
{Следующая фамилия}
fams[2]:=fams[2]+1;
end;
{Освобождаем рассмотренную фамилию}
fam_busy[fams[1]]:=false;
{Следующая фамилия}
fams[1]:=fams[1]+1;
end;
readln;
end.
Если Вы уже зарегистрированы на Портале - войдите в систему, если Вы еще не регистрировались - пройдите простую процедуру регистрации.