Задача 19 Урок 15

У вас есть два массива целых чисел по 10 элементов в каждом.
Выведите на экран все числа из первого массива, которые не содержаться во втором.

Type
  massiv=array [1..10] of integer;

function full(min:integer;max:integer):massiv;
var i:integer;
    mas:massiv;
begin
  randomize();
  for i:=low(mas) to high(mas) do
    mas[i]:=min+random(max-min+1);
  result:=mas;
end;

procedure wr(mas:massiv);
var i:integer;
begin
  for  i:=low(mas) to high(mas) do
    write(mas[i],' ');
  writeln();
end;

var mas1:massiv;
    mas2:massiv;
    j,i,len:integer;

begin
  len:=0;
  mas1:=full(-20,30);
  mas2:=full(0,30);
  wr(mas1);
  wr(mas2);
  for j:=low(mas1) to high(mas1) do
    for i:=low(mas2) to high(mas2) do
    begin
      if(mas1[j]<>mas2[i]) then
        len:=len+1;
      if(len=10) then
        begin
          write(mas1[j],' ');
          len:=0;
        end;
      if(i=10) then
        len:=0;
    end;
end.   

Консоль:

7 -19 18 16 30 -5 11 -8 -18 -18 
10 25 15 0 1 15 24 0 14 7 
-19 18 16 30 -5 11 -8 -18 -18    
vedro-compota's picture

 for j:=low(mas1) to high(mas1) do
    for i:=low(mas2) to high(mas2) do
    begin
      if(mas1[j]<>mas2[i]) then
        len:=len+1;
      if(len=10) then
        begin
          write(mas1[j],' ');
          len:=0;
        end;
      if(i=10) then
        len:=0;
    end;

--
1) Если элемент уже встретился -перебирать массив дальше смысла нет, надо использовать break
2)

if(len=10) 

-- лучше вместо счетчика использовать булевский флаг, и на основании его значения уже понимать печать ли нам или элемент или нет. Проверять флаг лучше за пределами внутреннего цикла

_____________
матфак вгу и остальная классика =)