Урок 23. Задача 3.

Урок 23. Задача 3.

Есть массив массив уникальных, ненулевых элементов (целые числа, 10 элементов):

[123, 45, 5638, 49, -78, 22, 5, 345, 68, 7]

После каких-то преобразований получился массив:

[123, 5638, 22, 5, 68, 7, 0, 0, 0, 0]

Задача: сформируйте ещё один массив из "потерянных" чисел (всех элементов 1-ого массива, которых нет во втором).

type arr_N = array[1..10] of integer;
var Arr_A :array [1..10] of integer = (123, 45, 5638, 49, -78, 22, 5, 345, 68, 7);
    Arr_B :array [1..10] of integer = (123, 5638, 22, 5, 68, 7, 0, 0, 0, 0);
    i, j, count :integer;
    U_arr :arr_N;

begin
  count := 1;

  for i := 1 to high(Arr_A) do
    for j := 1 to high(Arr_B) do
      if Arr_A[i] = Arr_B[j] then
        break
      else
        if j = high(Arr_B) then
        begin
          U_arr[count] := Arr_A[i];
          count += 1;
        end;

  for i := 1 to high(U_arr) do
    write(U_arr[i], ' ');

  readln;
end.  
vedro-compota's picture

пробовать решить за одно прочтение первого и одно прочтение второго массивов.

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

type arr_N = array[1..10] of integer;
var Arr_A :array [1..10] of integer = (123, 45, 5638, 49, -78, 22, 5, 345, 68, 7);
    Arr_B :array [1..10] of integer = (123, 5638, 22, 5, 68, 7, 0, 0, 0, 0);
    i, ib, count :integer;
    U_arr :arr_N;
 
begin
  ib := 1;  //  индексы элементов из Arr_B
  count := 0;  //  индексы элементов для U_arr
 
  for i := 1 to high(Arr_A) do
    if Arr_A[i] = Arr_B[ib] then
      ib += 1
    else
    begin
      count += 1;
      U_arr[count] := Arr_A[i];  //  запись отсутствующих чисел
    end;
 
  for i := 1 to count do
    write(U_arr[i], ' ');
 
  readln;
end.
vedro-compota's picture

засчитано

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