Используйте одномерный массив для решения следующей задачи. Прочитайте 20 чисел, каждое...

0 голосов
78 просмотров

Используйте одномерный массив для решения следующей задачи. Прочитайте 20 чисел, каждое из которых находится в диапазоне от 10 до 100 включительно. После того, как прочли очередное число, напечатайте его, но только в том случае, если оно не дублирует ранее прочитанные числа. Предусмотрите "наихудший" случай, когда все 20 чисел различны. Используйте наименьший возможный массив для решения этой задачи.
Паскаль! дам 20 баллов


Информатика | 78 просмотров
Дан 1 ответ
0 голосов
Правильный ответ

Для того, чтобы узнать, не встречалось ли 20-е число раньше, надо помнить, какие числа были до этого. Так что без массива с меньшим размером, чем 19, не обойтись (на самом деле это так, только если в каждом элементе массива хранить только одно число. Но мы так и будем делать). 

Алгоритм для решения задачи выберем простой: записываем все предыдущие числа в массив и для каждого следующего числа проходим по массиву.

var
  a: array[1..19] of byte;
  i, j, t: byte;

begin
  for i := 1 to 20 do
  begin
    read(t);
    if i < 20 then a[i] := t;
    for j := 1 to i - 1 do
      if a[j] = t then
        t := 0;
    if t > 0 then write(t, ' ');
  end;
end.

Пример ввода:
1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10

Пример вывода:
1 2 3 4 5 6 7 8 9 10