Определить, есть ли в классе человек, который побывал в гостях у всех - Turbo Pascal
Формулировка задачи:
Имеется список класса (все имена различны). Определить, есть ли в классе человек, который побывал в гостях у всех. (Для каждого ученика составить множество побывавших у него в гостях друзей, сам ученик в это множество не входит)
Спасибо большое заранее:3
Вот этот код, только одна проблемка. Я ввожу номера гостей и могу вводить их бесконечно долго, программа дальше не переходит. Подскажите, пожалуйста, что тут такое?
Ой, извиняюсь, забыл на вашем форуме поискать)
Уже нашел такой же вопрос, на который был дан ответ. Спасибо большое, Puporev.
Листинг программы
- type imena=(lb,tn,ln,ks,ns,mr,jn);{перечислимый тип для создания множеств}
- mnz=set of imena; {тип множеств}
- const k=6;
- sp:array[0..k] of string=('Люба','Таня','Лена','Ксюша',
- 'Настя','Марина','Женя');{массив имен для ввода и вывода}
- var m:array[0..k] of mnz;{массив множеств}
- i:imena; {cчетчик перечислимого типа}
- j,v:byte; {счетчики целого типа}
- s:string;
- f:boolean; {переменая логического типа}
- begin
- {формируем множества}
- writeln('Перечислите кто побывал в гостях у данного ученика');
- for j:=0 to k do
- begin
- writeln(sp[j]);
- m[j]:=[];
- writeln('Выберите имена побывавших у него в гостях кроме ',sp[j]);
- writeln('0-Люба 1-Таня 2-Лена 3-Ксюша 4-Настя 5-Марина 6-Женя 7-выход');
- repeat
- readln(v);{выбираем из списка номер}
- if (v in [0..k])and(v<>j)
- then m[j]:=m[j]+[imena(v)];{из диапазона 0-6 и кроме себя}
- until v=7;{7 - выход от данного ученика}
- end;
- {выведнм на экран что получилось}
- writeln('Были в гостях у');
- for j:=0 to k do
- begin
- write(sp[j],'-> ');
- for i:=lb to jn do
- if i in m[j] then write(sp[ord(i)],' ');
- writeln;
- end;
- f:=false;{считаем что нет такого ученика, кто был у всех}
- i:=lb;{начнем с первого}
- while(i<=jn)and not f do{пока не последний или не нашли такого ученика}
- begin
- v:=0;{у скольких побывал}
- for j:=0 to k do
- if (j<>ord(i))and(i in m[j]) then v:=v+1;{считаем}
- if v=k then {если у всех кроме себя, да!}
- begin
- f:=true;
- s:=sp[ord(i)]; {запомним имя}
- end
- else inc(i);{иначе проверяем следующего}
- end;
- if f then write('Есть ученик, побывавший в гостях у всех это ',s)
- else write('Нет ученика, побывавшего в гостях у всех');
- readln
- end.
Решение задачи: «Определить, есть ли в классе человек, который побывал в гостях у всех»
textual
Листинг программы
- writeln('0-Люба 1-Таня 2-Лена 3-Ксюша 4-Настя 5-Марина 6-Женя 7-выход');
Объяснение кода листинга программы
{0-Люба 1-Таня 2-Лена 3-Ксюша 4-Настя 5-Марина 6-Женя 7-выход}
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д