Имеется список класса(все имена различны). Определить,есть ли в классе человек,который побывал в гостях у всех. Для каждого ученика составить множество побывавших у него в гостях друзей, сам ученик в это множество не входит — Pascal(Паскаль)

{Имеется список класса(все имена различны).Определить,есть ли в классе человек,
 который побывал в гостях у всех.Для каждого ученика составить множество
 побывавших у него в гостях друзей, сам ученик в это множество не входит.}

program 3;
var spisok,xsp,ysp:set of 1..255;
    sad:array[1..10] of set of 1..255;
    toys:array[1..100] of string;
    i,n,ks,j,l,t,x:integer;
    toy:string;
begin write('Введите количество учеников в классе:');
      readln(n);spisok:=[];
      writeln('Введите имена учеников:');
      for i:=1 to n do
        begin readln(toys[i]);
              spisok:=spisok+[i]
        end;
      for i:=1 to n do
          begin write('Введите кол-во учеников,побывавших у ',toys[i],':');
                readln(l);sad[i]:=[i];
                for j:=1 to l do
                    begin readln(toy);x:=0;
                          for t:=1 to n do
                              if toy=toys[t] then x:=t;
                              if x<>0 then sad[i]:=sad[i]+[x]
                    end;
          end;
       xsp:=sad[1];
       for i:=2 to n do xsp:=xsp*sad[i];ks:=0;
       if ks=0 then writeln('Ученик, который побывал в гостях у всех:');
       for i:=1 to n do
           if i in xsp
              then begin writeln(toys[i]);
                         ks:=ks+1
                   end;
       if ks=1 then writeln('Ни один из учеников не побывал у всех в гостях ')
end.

Вариант № 2

{Имеется список класса(все имена различны). Определить,есть ли в классе человек,
 который побывал в гостях у всех. Для каждого ученика составить множество
 побывавших у него в гостях друзей, сам ученик в это множество не входит.}
program pr18;

const kol=50;
var spisok,xsp,ysp:set of 1..255;
    uchenik:array[1..kol] of set of 1..255;
    uch:array[1..kol] of string;
    i,n,ks,j,l,t,x:integer;
    toy:string;
begin repeat
         write('Введите количество учеников в классе:');
         readln(n);
         spisok:=[]
      until ((n<=kol) and (n>0));
      writeln('Введите имена учеников:');
      for i:=1 to n do
        begin readln(uch[i]);
              spisok:=spisok+[i]
        end;
      for i:=1 to n do
          begin write('Введите кол-во учеников,побывавших у ',uch[i],':');
                readln(l);
                uchenik[i]:=[i];
                for j:=1 to l do
                    begin readln(toy);
                          x:=0;
                          for t:=1 to n do
                              if toy=uch[t] then x:=t;
                              if ((x=0) or (x=i))
                                 then begin writeln('Этого не может быть!');
                                            j:=j-1
                                      end
                                 else uchenik[i]:=uchenik[i]+[x]
                    end;
          end;
       xsp:=uchenik[1];
       for i:=2 to n do xsp:=xsp*uchenik[i];ks:=0;
       for i:=1 to n do
           if i in xsp
              then ks:=ks+1;
       if ks=0 then writeln('Ни один из учеников не побывал у всех в гостях ')
               else begin writeln('Ученик, который побывал в гостях у всех:');
                          for i:=1 to n do
                              if i in xsp
                                 then writeln(uch[i])
                     end
end.

Leave a Comment

− 1 = 4