Задать вопрос
27 ноября, 11:15

Для заданного массива, состоящего из 100 целых чисел, сначала вывести все числа, встречающиеся в нем несколько раз, а затем все числа, встречающиеся в нем только один раз.

+5
Ответы (1)
  1. 27 ноября, 13:04
    0
    Основная идея: во вспомогательном массиве p строим двусвязный список, элементы которого указывают на предка и потомка члена массива, имеющего такое же значение. Сначала выводим элементы, имеющие потомков, но не имеющие предков - это будут элементы, которые встречаются более одного раза, а их порядок следования совпадет с порядком следования в массиве. Затем выводим элементы, которые не имеют ни предков, ни потомков, т. е. встречаются в массиве один раз.

    const

    n = 100;

    var

    a: array[1 ... n] of integer;

    p: array[1 ... n, 1 ... 2] of integer;

    {3 - индекс предыдущего элемента

    4 - индекс следующего элемента}

    i, j, e: integer;

    begin

    Randomize;

    for i : = 1 to n do

    begin

    e : = Random (51) - 25;

    a[i] : = e;

    p[i, 1] : = 0;

    p[i, 2] : = 0

    end;

    for i : = 2 to n do

    begin

    j : = i - 1;

    e : = a[i];

    repeat

    if e = a[j] then

    begin

    p[j, 1] : = i;

    p[i, 2] : = j;

    j : = 0

    end

    else

    j : = j - 1

    until j = 0

    end;

    for i : = 1 to n do

    if (p[i, 1] > 0) and (p[i, 2] = 0) then write (a[i]:4) ;

    for i : = 1 to n do

    if (p[i, 1] = 0) and (p[i, 2] = 0) then write (a[i]:4) ;

    writeln

    end.

    Тестовое решение:

    -15 - 21 - 4 24 20 16 4 14 3 1 25 - 9 - 14 10 12 - 13 9 - 2 - 16 - 10 - 25 21 2 8 15 - 1 19 22 18 - 23 6 - 6 - 17 - 24 17 - 20 - 7 - 12 - 19 - 3 7 23
Знаете ответ на вопрос?
Не уверены в ответе?
Правильный ответ на вопрос 👍 «Для заданного массива, состоящего из 100 целых чисел, сначала вывести все числа, встречающиеся в нем несколько раз, а затем все числа, ...» по предмету 📗 Информатика. Развернутая система поиска нашего сайта обязательно приведёт вас к нужной информации. Как вариант - оцените ответы на похожие вопросы. Но если вдруг и это не помогло - задавайте свой вопрос знающим оппонентам, которые быстро дадут на него ответ!
Искать готовые ответы