Задача 18 урок 15

Задача 18 урок 15

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

program task_18_lesson_15;
type Arr = array[1..10] of integer;

function CreatArray(min, max: integer) : Arr;  // заполнение массива
var
  i: integer;
  a: Arr;
begin
  randomize();
  for i := low(a) to high(a) do
    a[i] := min + random(max - min + 1);
  result := a;
end;

procedure PrintArr(a: Arr);     // печать массива
var
  i: integer;
begin
  for i := low(a) to high(a) do
    write(a[i], ' ');
end;

var
  i, j: integer;
  a, b: Arr;
  flag: boolean;
begin
  a := CreatArray(-10, 10);
  b := CreatArray(-10, 9);
  PrintArr(a);
  writeln();
  PrintArr(b);
  writeln();
  for i := 1 to 10 do
    begin
    flag := true;
    for j := 1 to 10 do
      begin
      if (a[i] = b[j]) then
        flag := false;
      end;
    if flag then
      write(a[i], ' ');
    end;
  readln
end.

Консоль

8 -3 -5 0 0 10 10 10 -6 -4
6 1 8 7 6 5 -10 1 -3 8
-5 0 0 10 10 10 -6 -4
vedro-compota's picture

   for j := 1 to 10 do
      begin
      if (a[i] = b[j]) then
        flag := false;
      end;

можно уменьшить число сравнений

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

program task_18_lesson_15;
type Arr = array[1..10] of integer;

function CreatArray(min, max: integer) : Arr;  // заполнение массива
var
  i: integer;
  a: Arr;
begin
  randomize();
  for i := low(a) to high(a) do
    a[i] := min + random(max - min + 1);
  result := a;
end;

procedure PrintArr(a: Arr);     // печать массива
var
  i: integer;
begin
  for i := low(a) to high(a) do
    write(a[i], ' ');
end;

var
  i, j: integer;
  a, b: Arr;
  flag: boolean;
begin
  a := CreatArray(-10, 10);
  b := CreatArray(-10, 9);
  PrintArr(a);
  writeln();
  PrintArr(b);
  writeln();
  for i := 1 to 10 do
    begin
    flag := true;
    for j := 1 to 10 do
      begin
      if (a[i] = b[j]) then
        begin
          flag := false;
          break;                // <-------------- Добавил break;
        end;
      end;
    if flag then
      write(a[i], ' ');
    end;
  readln
end.
vedro-compota's picture

засчитано

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