Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Kosotornov
1 / 1 / 0
Регистрация: 24.05.2013
Сообщений: 41
#1

Сформировать список L, включив в него по одному разу элементы, которые входят одновременно в оба списка L1 и L2. - C++

25.12.2013, 07:30. Просмотров 918. Ответов 9
Метки нет (Все метки)

Ребят я запутался окончательно.Пытался сам разобраться,но увы только все хуже стало.
задание:
Кликните здесь для просмотра всего текста
Сформировать список L, включив в него по одному разу элементы, которые входят
одновременно в оба списка L1 и L2.

Элементы я отсортировал,но как затереть одинаковые,не могу понять.
Кликните здесь для просмотра всего текста
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
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
143
144
#include <iostream>
using namespace std;
template<class TYPE>
struct link
{
       TYPE data;
       link* next;
};
template<class TYPE>
class linklist
{
      private:
              link<TYPE>* first;
      public:
             linklist()
                       {first=NULL;}
      void additem(TYPE d);
      void display();
      void sort1(TYPE &);
      void dlinna(TYPE &);
      void elim (TYPE d,TYPE &);
      void sort2(TYPE &,TYPE &,TYPE &);
};
template<class TYPE>
void linklist<TYPE>::additem (TYPE d)
{
     link<TYPE>* newlink = new link<TYPE>;
     newlink->data=d;
     newlink->next=first;
     first=newlink;
}
template <class TYPE>
void linklist<TYPE>::dlinna(TYPE &d)
{
     link<TYPE>* current=first;
     cout<<endl;
     d=0;
     while(current!=NULL)
     {
            d++;
            current=current->next;
     }
}
template <class TYPE>
void linklist<TYPE>::display()
{
     link<TYPE>* current=first;
     cout<<endl;
     while(current!=NULL)
     {
            cout<<' '<<current->data;
            current=current->next;
     }
}
template <class TYPE>
void linklist<TYPE>::elim(TYPE i,TYPE &r)
{
     link<TYPE>* current=first;
     for(int j=0;j<i;j++){
     current=current->next;}
     r=current->data;
}
template <class TYPE>
void linklist<TYPE>::sort1(TYPE &d)
{bool flag=false;TYPE x;
     link<TYPE>* current=first;
     cout<<endl;
     while(current!=NULL)
     {
            x=current->data;
            if (x==d) {flag=true;};
            current=current->next;
     };
if (flag==true){d=1;}     
}
template <class TYPE>
void linklist<TYPE>::sort2(TYPE &i,TYPE &z,TYPE &n)
{
 link<TYPE>* current=first;
 link<TYPE>* cur;
 for (int j=0;j<=i;j++)
 {
 current=current->next;  
 }
 for (int j=i;j<=n;j++)
 {   
     if(z==current->data)
     {cur = current; 
     current = current -> next; 
     delete(cur); 
     cur = NULL; 
     n--;
     }
     else{current=current->next;}
 }
}
 
int main ()
{int e=1,x,n,z,k;
    setlocale(0, "rus" );
    linklist<int> ld;
    linklist<int> ls;
    linklist<int> li;
    cout<<"Формируем перввый список"<<endl;
    while(e==1){
    cout<<"Введите элемент"<<endl;
    cin>>x;   
    ld.additem(x);
    cout<<"Добавить еще элемент?"<<endl;
    cout<<"1.Да"<<endl;
    cout<<"2.Нет"<<endl;
    cin>>e;
    }
    e=1;
    cout<<"Формируем второй список"<<endl;
    while(e==1){
    cout<<"Введите элемент"<<endl;
    cin>>x;   
    ls.additem(x);
    cout<<"Добавить еще элемент?"<<endl;
    cout<<"1.Да"<<endl;
    cout<<"2.Нет"<<endl;
    cin>>e;
    }
    cout<<endl<<"Первый список:"<<endl;
    ld.display();
    cout<<endl<<"Второй список:"<<endl;
    ls.display();
    ls.dlinna(n);
    for (int i=0;i<n;i++){
        ls.elim(i,z);
        k=z;
        ld.sort1(z);
    if (z==1){li.additem(k);}}
    li.dlinna(n);
    for (int i=0;i<n;i++){
        li.elim(i,z);
        li.sort2(i,z,n);
    }
    cout<<endl<<"Результирующий список имеет вид:"<<endl;
    li.display();
    cin>>e;
    return 0;
}


PS может кто подскажет,если ли более легкий способ работать со списками.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.12.2013, 07:30
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Сформировать список L, включив в него по одному разу элементы, которые входят одновременно в оба списка L1 и L2. (C++):

Сформировать список l, включив в него по одному разу элементы, которые входят. В один из списков l1 или l2. Но не входят в другой - C++
Добрый вечер! Собственно суть задачи такова: Я не совсем поняла списки, вы не могли бы помочь разобраться в программе? есть некие...

Сформировать список L включив в него по одному разу элементы, которые входят в один из списков L1 и L2, но в то же время не входит во второй из них - C++
Добрый вечер! Помогите, пожалуйста, начинающей программистке решить следующую задачу: Разработать шаблон класса для работы с...

Построить новый список L3, включив в него элементы, которые входят одновременно в L1 и в L2 - C++
Даны два целочисленных списка L1 и L2. Построить новый список L3, включив в него элементы, которые входят одновременно в L1 и в L2. ...

Описать функцию, которая формирует список Common, включив в него элементы, ко-торые входят одновременно в список М1 и М2 - C++
Описать функцию, которая формирует список Common, включив в него элементы, ко-торые входят одновременно в список М1 и М2.

Сформировать список L, включив в него положительные элементы списка L1 и отрицательные элементы списка L2 - C++
Сформировать список L, включив в него положительные элементы списка L1 и отрицательные элементы списка L2. Список L отсортировать в порядке...

Сформировать список L, включив в него положительные элементы списка L1 и отрицательные элементы списка L2 - C++
Сформировать список L, включив в него положительные элементы списка L1 и отрицательные элементы списка L2. Список L отсортировать в порядке...

9
SatanaXIII
25.12.2013, 17:05
  #2
 Комментарий модератора 
Kosotornov, пункт 5.5 Правил: Запрещено дублировать тему.
0
Kosotornov
1 / 1 / 0
Регистрация: 24.05.2013
Сообщений: 41
25.12.2013, 19:12  [ТС] #3
Цитата Сообщение от SatanaXIII Посмотреть сообщение
Kosotornov, пункт 5.5 Правил: Запрещено дублировать тему.
Лучше подсказал библиотеку для работы со списками
0
SatanaXIII
Супер-модератор
Эксперт С++
5690 / 2745 / 258
Регистрация: 01.11.2011
Сообщений: 6,699
Завершенные тесты: 1
25.12.2013, 19:23 #4
Цитата Сообщение от Kosotornov Посмотреть сообщение
библиотеку для работы со списками
stl

А вообще почитайте пожалуйста правила форума. Там всего одна страничка. Но зато написано про то что делать, чтобы поднять свою тему в общем списке. И про обсуждение действий администрации тоже написано.
0
Kosotornov
1 / 1 / 0
Регистрация: 24.05.2013
Сообщений: 41
25.12.2013, 21:50  [ТС] #5
Цитата Сообщение от SatanaXIII Посмотреть сообщение
stl

А вообще почитайте пожалуйста правила форума. Там всего одна страничка. Но зато написано про то что делать, чтобы поднять свою тему в общем списке. И про обсуждение действий администрации тоже написано.
Прочитал,принято.
Можешь написать какую библиотеку подключить надо,и какие функции есть и что они делают.
я гуглю найти не могу =(
0
outoftime
║XLR8║
755 / 655 / 88
Регистрация: 25.07.2009
Сообщений: 3,289
Записей в блоге: 5
25.12.2013, 23:20 #6
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <iterator>
#include <algorithm>
#include <set>
#include <vector>
 
int main()
{
    std::set<int> l1 = {1,5,1,3,6,76,2231,6,6,223,34,6,2343,6,4},
        l2 = {521,5,6,214,6,7,41,6,7,12421,654,132312,65,6213,5,6};
    std::vector<int> res;
    std::merge(l1.begin(), l1.end(), l2.begin(), l2.end(), std::back_inserter(res));
    std::copy(res.begin(), res.end(), std::ostream_iterator<int>(std::cout, " "));
    
    return EXIT_SUCCESS;
}
Добавлено через 1 минуту
Kosotornov,
Bash
1
2
D:\Projects\c++\help>make
g++ cyberforum.cpp -o run.exe -std=c++11 -I"%BOOST_HOME%" -L"%BOOST_HOME%\lib"
Добавлено через 12 минут
Ошибка, надо сливать в std::set что-бы не было повторов.

Добавлено через 1 минуту
Вот так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <iterator>
#include <algorithm>
#include <set>
 
int main()
{
    std::set<int> l1 = {1,5,1,3,6,76,2231,6,6,223,34,6,2343,6,4},
        l2 = {521,5,6,214,6,7,41,6,7,12421,654,132312,65,6213,5,6};
    std::set<int> res;
    std::merge(l1.begin(), l1.end(), l2.begin(), l2.end(), std::inserter(res, res.begin()));
    std::copy(res.begin(), res.end(), std::ostream_iterator<int>(std::cout, " "));
    
    return EXIT_SUCCESS;
}
0
Kosotornov
1 / 1 / 0
Регистрация: 24.05.2013
Сообщений: 41
26.12.2013, 00:09  [ТС] #7
а можешь расписать что делает каждая функция???
0
Kosotornov
1 / 1 / 0
Регистрация: 24.05.2013
Сообщений: 41
26.12.2013, 01:37  [ТС] #9
А почему он ошибку выдает???
Кликните здесь для просмотра всего текста
`l1' must be initialized by constructor, not by `{...}'
0
outoftime
║XLR8║
755 / 655 / 88
Регистрация: 25.07.2009
Сообщений: 3,289
Записей в блоге: 5
26.12.2013, 01:57 #10
Цитата Сообщение от outoftime Посмотреть сообщение
g++ cyberforum.cpp -o run.exe -std=c++11
Цитата Сообщение от outoftime Посмотреть сообщение
Найди соответствие.

Добавлено через 2 минуты
Если в 2ух словах, в с++11 есть фишка - список инициализации, который позволяет инициализировать объекты с меньшим количеством кода.
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.12.2013, 01:57
Привет! Вот еще темы с ответами:

Написать программу, формирующую список, куда входят по одному разу элементы, присутствующие в обоих списках - C++
Ребят, прошу вашей помощи. Я плохо еще разбираюсь в односвязных списках. Мне просто программу с функциями нужно написать, которая...

Получить числа, которые входят в массив по одному разу - C++
Дан одномерный числовой массив. Получить числа, которых входят в массив по одному разу.

Напечатать в алфавитном порядке все буквы, которые входят в текст по одному разу - C++
Необходимо решить следующее : Задача 1. Дан произвольный текст. Напечатать в алфавитном порядке все буквы, которые входят в этот текст по...

Вывести на экран в алфавитном порядке все символы которые входят в массив по одному разу - C++
Срочно нужна программа... Вот условие... Задан массив из k символов латинского алфавита. Вывести на экран в алфавитном порядке все...


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

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

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