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

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

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

[1, 3, 2, 1, 3, 2, 2, 4, 0, -5]

Задача: вывести на экран все числа, которые встречаются нечетное число раз.
Т.е. в данном случае это:

2, 4, 0, -5

Решите:
1) любым способом
2) за 1 прочтение массива (сложность меньше или равную N), т.е. по итогам одного чтения массива ответ должен быть готов.
Примечание: давалась как простая разминочная задачка для собеседования в Яндекс.

1 вариант

type arr_N = array[1..10] of integer;
var Arr :array [1..10] of integer = (1, 3, 2, 1, 3, 2, 2, 4, 0, -5);
    i, j :integer;
    U_arr :arr_N;

begin
  i := 1;
  j := 2;
  while i < high(Arr) do
  begin
    if j > high(Arr) then
    begin
      i += 1;
      j := i + 1;
    end
    else
      if Arr[i] = Arr[j] then
      begin
        Arr[j] := Arr[i + 1];
        U_arr[i] := 1;
        U_arr[i + 1] := 1;
        i := i + 2;
        j := i;
      end;
    j += 1;
  end;
  
  for i := 1 to 10 do
    if U_arr[i] = 0 then
    write(Arr[i], ' ');
  
  readln();
end.
2 вариант
var Arr :array [1..10] of integer = (1, 3, 2, 1, 3, 2, 2, 4, 0, -5);
    i, j :integer;

begin
  i := 1;
  j := 2;
  while i < high(Arr) do
  begin
    if j > high(Arr) then
    begin
      write(Arr[i], ' ');
      i += 1;
      j := i + 1;
      if i = high(Arr) then
        write(Arr[i]);
    end
    else
      if Arr[i] = Arr[j] then
      begin
        Arr[j] := Arr[i + 1];
        i := i + 2;
        j := i;
      end;
    j += 1;
  end;
  readln();
end.
vedro-compota's picture

переделать

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