|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Иллюстрация к решению 2Стр 1 из 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
test1
test2
a: 1 2 3 3 4
b: 4 5 6 7 10
c: 1 2 3
Синим отмечены индексы массива
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|