Хелпикс

Главная

Контакты

Случайная статья





Иллюстрация к решению 2



 

 

 

Заданы два массива.

Составить третий массив, который бы содержал такие элементы, которые есть в первом массиве, но их нет во втором

 

Вариант решения №1

program HomeTask;

uses

SysUtils, LazUTF8;

const n=5;

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

flag:boolean;

i, j, k:integer;

begin

writeln(UTF8ToConsole('Введите первый массив'));

for i:=1 to n do

read(a[i]);

readln;

 

writeln(UTF8ToConsole('Введите второй массив'));

for i:=1 to n do

read(b[i]);

readln;

 

//проверка массивов на совпадение

k:=0;

for i:=1 to n do

begin

flag:=false;

j:=1;

 

while not flag and (j<=n) do

 

     if a[i] = b[j] then

       flag:= true

     else

       j:=j+1;

if not flag then

   begin

     j:=1;

     while not flag and (j<=k) do

         if c[j]=a[i] then

           flag:=true

         else

           j:=j+1;

     if not flag then

       begin

         k:=k+1;

         c[k]:= a[i];

       end;

   end;

end;

//вывод массива с числами которые есть в 1-ом и нет во 2-ом

if k = 0 then

writeln(UTF8ToConsole('Таких элементов нет'))

else

for i:=1 to k do

write(c[i], ' ');

 

readln;

end.   

 

Вариант решения №2

program HomeTask1to30;

uses

SysUtils, LazUTF8;

const n=5;

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

test1,test2: array [1..30] of boolean;

i,k:integer;

begin

writeln(UTF8ToConsole('Введите первый массив'));

for i:=1 to n do

repeat

read(a[i]);

if (a[i] < 1) or (a[i] > 30) then

   writeln(UTF8ToConsole('Неверное значение'));

until (a[i] >= 1) and (a[i] <= 30);

readln;

 

writeln(UTF8ToConsole('Введите второй массив'));

for i:=1 to n do

repeat

read(b[i]);

if (b[i] < 1) or (b[i] > 30) then

   writeln(UTF8ToConsole('Неверное значение'));

until (b[i] >= 1) and (b[i] <= 30);

readln;

 

for i:=1 to 30 do

test1[i]:=false;

 

for i:=1 to 30 do

test2[i]:=false;

 

for i:=1 to n do

test1[a[i]]:=true;

 

for i:=1 to n do

test2[b[i]]:=true;

 

 

//проверка массивов на совпадение

k:=0;

for i:=1 to 30 do

if test1[i] and not test2[i] then

begin

   k:=k+1;

   c[k]:=i;

end;

 

//вывод массива с числами, которые есть в 1-ом и нет во 2-ом

if k = 0 then

writeln(UTF8ToConsole('Таких элементов нет'))

else

for i:=1 to k do

write(c[i], ' ');

 

readln;

end.


 

 

Иллюстрация к решению 2

 

T T T T F F F F F F F F F F F F F F F F F F F F F F F F F F

test1

 

 

F F F T T T T F F T F F F F F F F F F F F F F F F F F F F F

test2

 

 

a: 1 2 3 3 4

 

b: 4 5 6 7 10

 

c: 1 2 3

 

Синим отмечены индексы массива



  

© helpiks.su При использовании или копировании материалов прямая ссылка на сайт обязательна.