Напишите программу в паскале используя циклы. Даны три одномерных массива из целых чисел. Найти элементы, принадлежащие всем трем массивам.

meizum2luba meizum2luba    1   11.04.2020 15:22    1

Ответы
Вениамин228 Вениамин228  13.10.2020 02:21

const N = 7;

const MAX = 10;

var a,b,c: array [1..N] of integer;

var d: array [1..N] of boolean;

var i,j,k,flag: integer;

begin

// Автозаполнение

randomize();

for i:=1 to N do  

 begin

 a[i]:=random(MAX+1);

 b[i]:=random(MAX+1);

 c[i]:=random(MAX+1);

 d[i]:=false;

 end;

 

// Вывод на экран

write('Массив a: ');

for i:=1 to N do write(a[i],' ');

write(сhr(10),'Массив b: ');

for i:=1 to N do write(b[i],' ');

write(сhr(10),'Массив c: ');

for i:=1 to N do write(c[i],' ');

// Поиск элементов, принадлежащих всем 3м массивам

write(сhr(10),'Элементы, принадлежащие всем трем массивам: ');

for i:=1 to N do

 begin

 flag:=0;

   // Следующий цикл проверяет, есть ли элемент a[i]

   // в массиве b.

   for j:=1 to N do

     begin

       if (a[i]=b[j]) then  

         begin  

         flag:=flag+1;

         break;

         end;

     end;

   // Следующий цикл проверяет, есть ли элемент a[i]

   // в массиве c.

   for j:=1 to N do

     begin

       if (a[i]=c[j]) then  

         begin  

         flag:=flag+1;

         break;

         end;

     end;

   // Если элемент найдет во всех трех массивах, в массиве d

   // указывается, что данный элемент уже найден

   if (flag=2) then d[i]:=true;

   

   // В следующем цикле проверяется, был ли уже в массиве a  

   // элемент a[i]. Если был, и если он есть во всех трех массивах

   // (условие d[k]), то флаг обнуляется и элемент не выводится  

   if (i>0) and (flag=2) then  

     for k:=i-1 downto 1 do

       if (a[k]=a[i]) and (d[k]) then flag:=0;

   if (flag=2) then write(a[i],' ');

   end;

end.

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