Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/15: Рейтинг темы: голосов - 15, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 28.12.2016
Сообщений: 23

В списке из подряд идущих одинаковых элементов оставить первый

11.01.2018, 17:45. Показов 3010. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Дан список из n целых чисел а1, а2, ... , аn. Из группы подряд идущих элементов с одинаковыми значениями оставить только первый. Приблизительную версию без этой функции написал, нужно только вписать туда функцию, помогите пожалуйста!

C++
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
#include <iostream> 
#include <iomanip> 
#include <math.h> 
#include <stdlib.h> 
#include <ctime>
using namespace std; 
 
struct list 
{ 
int info; 
list *pred, *next; 
}; 
 
//Создание пустого списка 
void CreatNullList(list*&head, list*&tail) 
{ 
head = new list; 
tail = new list; 
 
head->next = tail; 
tail->pred = head; 
} 
 
//Функция формирует список из N целых элементов со сторожами head и tail 
void CreateRandomlist(list*&head, list*&tail, int n = 10) 
{ 
head = new list; 
tail = new list; 
 
head->next = tail; 
tail->pred = head; 
list* last = head; 
for (int i = 0; i < n; i++) 
{ 
list* p = new list; 
 
p->pred = last; 
p->next = last->next; 
last->next = p; 
p->next->pred = p; 
 
last = p; 
p->info = rand() % 10 - 5; 
 
} 
return; 
} 
 
//Функция выводит двусвязный список на экран 
void PrintList(list* head, list* tail) 
{ 
if (head && tail) 
{ 
list* p = head->next; 
while (p != tail) 
{ 
cout << setw(4) << p->info; 
p = p->next; 
} 
} 
return; 
}
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
11.01.2018, 17:45
Ответы с готовыми решениями:

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

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

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

4
 Аватар для Olej
322 / 170 / 24
Регистрация: 25.03.2012
Сообщений: 712
11.01.2018, 17:51
Цитата Сообщение от glupec Посмотреть сообщение
Дан список из n целых чисел а1, а2, ... , аn. Из группы подряд идущих элементов с одинаковыми значениями оставить только первый.
Зачем такое мудрёное (и, наверное с ошибками) описание списка, если а). это C++ и б). есть list<int>? И с которым в). ваша задача решается вся в 3-4 строки?
0
0 / 0 / 0
Регистрация: 28.12.2016
Сообщений: 23
11.01.2018, 17:59  [ТС]
Вы наверное уже поняли, что я не знаток. Как учат описывать так и стараюсь, честно

Добавлено через 5 минут
Помогите пожалуйста если знаете как делать
0
 Аватар для Olej
322 / 170 / 24
Регистрация: 25.03.2012
Сообщений: 712
11.01.2018, 18:58
Лучший ответ Сообщение было отмечено glupec как решение

Решение

Цитата Сообщение от glupec Посмотреть сообщение
Помогите пожалуйста если знаете как делать
C++
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
#include <bits/stdc++.h>
using namespace std;
 
ostream& operator <<( ostream& out, const list<int>& obj ) {
   out << "[ ";
   for( auto i: obj ) cout << i << " "; 
   return out << "]";
}
 
void ddubl( list<int>& obj ) {
   auto c = obj.begin(), n = c;
   n++;
   while( c != obj.end() ) {
      if( *n == *c ) {
         auto d = n;
         n++;          
         obj.erase( d );
      }
      else {
         c = n;
         n++;
      } 
      if( n == obj.end() ) 
         break;
   }
}
 
int main( int argc, char *argv[] ) {
   list<int> lst;
   while( true ) {
      lst.clear();
      string e;
      getline( cin, e );
      if( !cin || 0 == e.length() ) break;
      istringstream ist( e );
      int d;
      while( ist >> d ) 
         lst.push_back( d );
      cout << lst << " => ";
      ddubl( lst );
      cout << lst << endl;
   }   
}
Сборка с опцией использования стандарта C++11 - это упрощает код, но вы можете легко переписать и без:
Code
1
$ g++ -Wall -std=c++11 -O3  dlist.cc -o dlist
Выполнение:
Code
1
2
3
4
5
6
7
$ ./dlist 
1 1 2 3 4
[ 1 1 2 3 4 ] => [ 1 2 3 4 ]
1 2 2 2 3 4 5 5 5 6
[ 1 2 2 2 3 4 5 5 5 6 ] => [ 1 2 3 4 5 6 ]
1 2 3 4 4 4 4
[ 1 2 3 4 4 4 4 ] => [ 1 2 3 4 ]
P.S. Если вам уж крайне нужно "ручное" представление списка - то можете переписать по аналогии.
1
0 / 0 / 0
Регистрация: 28.12.2016
Сообщений: 23
11.01.2018, 19:36  [ТС]
Спасибо, я попробую сам дописать ручной ввод
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
11.01.2018, 19:36
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru