В
Все
М
Математика
А
Английский язык
Х
Химия
Э
Экономика
П
Право
И
Информатика
У
Українська мова
Қ
Қазақ тiлi
О
ОБЖ
Н
Немецкий язык
Б
Беларуская мова
У
Українська література
М
Музыка
П
Психология
А
Алгебра
Л
Литература
Б
Биология
М
МХК
О
Окружающий мир
О
Обществознание
И
История
Г
Геометрия
Ф
Французский язык
Ф
Физика
Д
Другие предметы
Р
Русский язык
Г
География
228даша228
228даша228
17.02.2023 07:17 •  Информатика

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

Показать ответ
Ответ:
костя665
костя665
08.07.2020 07:48
Основная идея: во вс массиве 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
0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота