Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 20.05.2013
Сообщений: 202

Список: Из группы подряд идущих элементов с одинаковыми значениями оставить только первый

09.06.2013, 19:24. Показов 1827. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите!!!! Дан список из n целых чисел a[1],a[2],..,a[n]. Из группы подряд идущих элементов с одинаковыми значениями оставить только первый.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
09.06.2013, 19:24
Ответы с готовыми решениями:

Из каждой группы подряд идущих одинаковых слов в списке оставить только одно
Составить программу, которая формирует список с двумя связями, добавляет в него не менее 20 слов на русском языке. Из каждой группы подряд...

В списке L с каждой группы подряд равных элементов оставить только один элемент
Опишите программу , которая в списке L с каждой группы подряд равных элементов оставляет только один элемент.

Из каждой группы равных между собой элементов нужно оставить только один
1.Дан целочисленный массив а1,а2,...аn,среди элементов которого могут быть равные. Из каждой группы равных между собой элементов нужно...

1
 Аватар для Mawrat
13116 / 5897 / 1708
Регистрация: 19.09.2009
Сообщений: 8,809
12.06.2013, 04:35
Лучший ответ Сообщение было отмечено wsa как решение

Решение

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
program Project1;
 
type
  {Тип основных данных списка.}
  TData = Integer;
  {Тип указателя на элемент списка.}
  TPElem = ^TElem;
  {Тип элемента списка.}
  TElem = record
    Data : TData;   {Основные данные элемента.}
    PNext : TPElem; {Указатель на следующий элемент списка.}
  end;
  {Тип, описывающий однонаправленный список.}
  TDList = record
    PFirst, PLast : TPElem; {Указатели на первый и последний элементы списка.}
  end;
 
{Инициализация списка. Внимание! Эту процедуру можно выполнять только
в отношении пустого списка. Иначе - будут утечки памяти.}
procedure Init(var aList : TDList);
begin
  aList.PFirst := nil;
  aList.PLast := nil;
end;
 
{Добавление элемента в конец однонаправленного списка.}
procedure Add(var aList : TDList; const aData : TData);
var
  PElem : TPElem;
begin
  New(PElem);
  PElem^.Data := aData;
  PElem^.PNext := nil;
  if aList.PFirst = nil then
    aList.PFirst := PElem
  else
    aList.PLast^.PNext := PElem;
  aList.PLast := PElem;
end;
 
{Освобождение памяти, выделенной под список и инициализация.}
procedure LFree(var aList : TDList);
var
  PNext, PDel : TPElem;
begin
  PNext := aList.PFirst;
  while PNext <> nil do begin
    PDel := PNext;
    PNext := PNext^.PNext;
    Dispose(PDel);
  end;
  Init(aList);
end;
 
{Распечатка однонаправленного списка.}
procedure LWriteln(const aList : TDList);
var
  PElem : TPElem;
begin
  if aList.PFirst = nil then begin
    Writeln('Список пуст.');
    Exit;
  end;
 
  PElem := aList.PFirst;
  while PElem <> nil do begin
    if PElem <> aList.PFirst then Write(', ');
    Write(PElem^.Data);
    PElem := PElem^.PNext;
  end;
  Writeln;
end;
 
var
  L : TDList;
  PElem, PPrev, PDel : TPElem;
  Data : TData;
  i, Code : Integer;
  S : String;
begin
  {Начальная инициализация списка.}
  Init(L);
 
  repeat
    {Создание списка.}
    Writeln('Создание списка.');
    Writeln('Прекратить ввод - пустая строка + Enter.');
    i := 0;
    repeat
      Write('Элемент ', i + 1, ': ');
      Readln(S);
      if S <> '' then begin
        Val(S, Data, Code);
        if Code = 0 then begin
          Inc(i);
          Add(L, Data);
        end else
          Writeln('Неверный ввод. Повторите.');
      end;
    until S = '';
    Writeln('Составлен список:');
    LWriteln(L);
 
    {Удаляем из списка одинаковые, подряд идущие элементы, кроме первого
    в каждой группе.}
    i := 0;
    if L.PFirst <> nil then begin
      PPrev := L.PFirst;     {Предыдущий элемент.}
      PElem := PPrev^.PNext; {Текущий элемент.}
      while PElem <> nil do
        {Если предыдущий элемент равен текущему, то удаляем текущий элемент.}
        if PPrev^.Data = PElem^.Data then begin
          {Указатель на удаляемый элемент.}
          PDel := PElem;
          {Исключаем текущий элемент из списка.}
          PElem := PElem^.PNext;
          PPrev^.PNext := PElem;
          {Если удаляется последний элемент в списке.}
          if PDel = L.PLast then L.PLast := PPrev;
          {Освобождение памяти, занятой под элемент.}
          Dispose(PDel);
          {Количество удалённых элементов стало на 1 больше.}
          Inc(i);
        {Если предыдущий элемент НЕ равен текущему, то переходим к следующему элементу.}
        end else begin
          PPrev := PElem;
          PElem := PElem^.PNext;
        end;
    end;
 
    Writeln('Удалено элементов: ', i);
    Writeln('Список после обработки:');
    LWriteln(L);
 
    {Освобождение памяти, занятой под список.}
    LFree(L);
    Writeln('Память, выделенная для списка, освобождена.');
 
    Writeln('Повторить - Enter, выход - любой символ + Enter.');
    Readln(S);
  until S <> '';
end.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
12.06.2013, 04:35
Помогаю со студенческими работами здесь

Из каждой группы подряд идущих одинаковых элементов оставить только один
Составить программу, которая в списке L из каждой группы подряд идущих одинаковых элементов оставляет только один. С объяснениями что как...

Из группы подряд идущих элементов с одинаковыми значениями оставить только первый
Дан список из n целых чисел a1,a2,...,an. Из группы подряд идущих элементов с одинаковыми значениями оставить только первый.

Из каждой группы подряд идущих элементов оставить только один
Дан список строк. Написать подпрограмму, которая из каждой группы подряд идущих элементов оставляет только один.

Из каждой группы подряд идущих элементов оставить только один
Дан список строк. Написать подпрограмму, которая из каждой группы подряд идущих элементов оставляет только один. заранее спасибо кто...

В предпоследнем слове из каждой группы идущих подряд символов оставить только один символ
дан текст состоящий из слов.слова разделены пробелом,в предпоследнем слове из каждой группы идущих подряд символов оставить только один...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru