Форум программистов, компьютерный форум, киберфорум
Наши страницы
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
nkSuefa
0 / 0 / 0
Регистрация: 18.01.2018
Сообщений: 28
1

Удалить из массива все одинаковые элементы, оставив их последние вхождения

18.01.2018, 10:39. Просмотров 677. Ответов 2
Метки нет (Все метки)

Дано целочисленный массив размера N. Удалить из массива все одинаковые
элементы, оставив их последние вхождения.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.01.2018, 10:39
Ответы с готовыми решениями:

Удалить из массива все одинаковые элементы оставив их последние вхождения
Дали ещё 4 задачи с массивами((( а с массивами у меня вообще завал полный:help:...

Удалить из массива все одинаковые элементы, оставив их первые вхождения
Дан целочисленный массив размера N. Удалить из массива все одинаковые элементы,...

Удалить из массива все соседние одинаковые элементы, оставив их первые вхождения
Дан массив случайных чисел из N элементов. Удалить из массива все соседние...

Из массива исключить все элементы, у которых есть равные, оставив при этом последние вхождения элементов
Из массива B исключить все элементы, у которых есть равные, оставив при этом...

Кольцевой двунаправленный список: удалить все элементы, у которых одинаковые соседи
Дан кольцевой двунаправленный список. Из списка L удалить все элементы у...

2
bormant
Модератор
Эксперт Pascal/DelphiЭксперт NIX
3902 / 2560 / 2084
Регистрация: 22.11.2013
Сообщений: 7,152
18.01.2018, 21:47 3
Лучший ответ Сообщение было отмечено ZX Spectrum-128 как решение

Решение

ZX Spectrum-128,
не очень эффективно.
Задача удалить какие-то элементы из массива проще решается путем оставления противоположных.

В данном случае это позволит переместить хвост массива только один раз, а не при каждом обнаружении повтора.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
const nn=30;
var
  a: array [0..nn-1] of Integer;
  i, j, k, n: Integer;
begin
  Randomize;
  n:=nn;                               { актуальное количество элементов }
  for i:=0 to n-1 do a[i]:=Random(n div 2);      { повторы гарантированы }
  Write('A ='); for i:=0 to n-1 do Write(' ',a[i]); WriteLn;  { вывод массива }
  k:=n-1;                              { последний уже уникальный }
  for i:=n-2 downto 0 do begin         { уплотним правый хвост }
    j:=n-1; while a[i]<>a[j] do Dec(j); { проверим на повтор справа }
    if j=i then begin                   { уникальный ... }
      Dec(k); a[k]:=a[i];               { ... сохраним его справа }
    end;
  end;
  if k>0 then begin                    { были повторы }
    Dec(n,k);                           { вычтем повторы }
    for i:=0 to n-1 do a[i]:=a[i+k];    { перенесем хвост в начало }
  end;
  Write('A''='); for i:=0 to n-1 do Write(' ',a[i]); WriteLn;  { вывод массива }
  Write('Нажмите Enter...'); ReadLn;
end.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.01.2018, 21:47

Все одинаковые элементы переместить в конец массива
Program elem; uses crt; const n=12;m=10;p=120; type...

Упорядочить по убыванию только положительные элементы массива, оставив другие элементы в прежних ячейках
Упорядочить по убыванию только положительные элементы массива, оставив другие...

Удалить из одномерного массива все элементы расположенные между максимальным и минимальным элементами массива
Удалить из одномерного массива все элементы расположенные между максимальным и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru