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

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

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

Объединение и упорядочивание двух множеств - C++

18.11.2013, 17:34. Просмотров 453. Ответов 2
Метки нет (Все метки)

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

Пусть заданы два множества А и В в виде неупорядоченных числовых последовательностей. Создать программу, которая упорядочивает существующие множества и определяет объединения двух множеств порядка 7 и 12.

Код программы

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
145
146
147
148
149
#include <iostream>
#include <string>
#include <fstream>
using namespace std;
 
string s = "D:/results.txt";
class elem{
public:
    int i;
    elem *pN;
};
 
class list{
    elem *a;
 
    elem *pa;
    elem *pb;
    elem *c;
    elem *e;
    elem *p;
    int d;
public:
    list(){
        a = nullptr;
 
    }
    ~list(){}
    void addElement(int i){
        if (a != nullptr)
        {
            elem *cur = new elem;
            cur = a;
            while (cur->pN != nullptr)
            {
                cur = cur->pN;
            }
            elem *ne = new elem;
            ne->i = i;
            ne->pN = nullptr;
            cur->pN = ne;
 
        }
        else
        {
            elem *ne = new elem;
            ne->i = i;
            ne->pN = nullptr;
            a = ne;
        }
    }
    void getList(ofstream &f, string mess){
        f.open(s, ios::app);
        if (f.fail()){
            cout << "\n Помилка відкриття файлу";
        }
        if (a != nullptr)
        {
            elem *cur = new elem;
            cur = a;
            f << mess << endl;;
            f << "\n==============================================================================\n";
            while (cur != nullptr)
            {
                f << "|" << cur->i << "| ";
                cur = cur->pN;
            }
            f << "\n==============================================================================\n";
        }
        f.close();
    }
    void Append(int d){
        elem *q = new elem;
        q->i = d;
        q->pN = nullptr;
        if (c == nullptr)
            c = q;
        else
            e->pN = q;
        e = q;
    }
 
    list intersection(list b, list newl)
    {
        pa = a;
        pb = b.a;
        c = nullptr;
        e = nullptr;
        while ((pa != nullptr) && (pb != nullptr)){
            if (pa->i < pb->i){
                d = pa->i;
                pa = pa->pN;
            }
            else if (pa->i > pb->i)
            {
                d = pb->i;
                pb = pb->pN;
            }
            else {
                d = pa->i;
                pa = pa->pN;
                pb = pb->pN;
            }
            newl.addElement(d);
        }
        p = nullptr;
        if (pa != nullptr) {
            p = pa;
        }
        if (pb != nullptr) {
            p = pb;
        }
        while (p != nullptr) {
            newl.addElement(p->i);
            p = p->pN;
        }
        return newl;
    }
 
};
 
int main()
{
    setlocale(LC_ALL, "Rus");
    ofstream ofs(s);
    ofs.close();
    const int n = 7;
    list a;
    cout << "Введiть " << n << " елементiв\n";
    for (int i = 0; i < n; i++)
    {
        int s;
        cin >> s;
        a.addElement(s);
    }
    list b;
    cout << "Введiть " << n + 5 << " елементiв\n";
    for (int i = 0; i < n + 5; i++)
    {
        int s;
        cin >> s;
        b.addElement(s);
    }
    list c;
    a.getList(ofs, "Список А");
    b.getList(ofs, "Список Б");
    c = a.intersection(b, c);
    c.getList(ofs, "Результат об'єднання ");
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.11.2013, 17:34
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Объединение и упорядочивание двух множеств (C++):

Объединение двух множеств - C++
С 32 по 63 строчку, проблема в том, что не получается сделать объединение двух множеств. Подскажите в чем проблема? #include...

Найти объединение двух множеств - C++
Необходимо найти объединение двух множеств, но программа некорректно выдает ответ.Не могу найти ошибку #include&lt;iostream&gt; ...

Объединение и упорядочивание массивов - C++
Составить программу которая объединяет два упорядоченных по возрастанию массива в один, так же упорядоченный массив.

объединение множеств - C++
template&lt;class ValType, class FwdIt&gt; FwdIt copy ( FwdIt first, FwdIt last, FwdIt result ) { while (first!=last) *result++ =...

Объединение множеств - C++
Задача. Написать программу, которая объединяет 2 множества. Вот мой код. Мне выдаёт ошибку, что последовательность не отсортирована. В...

Объединение множеств(массивов) - C++
Например, если у меня есть массивы 123 и 3456, то объединение должно выдать 12345. Подскажите алгоритм объединения множеств. ...

2
W0lfdalE
7 / 7 / 0
Регистрация: 03.07.2013
Сообщений: 26
18.11.2013, 17:38 #2
Вы понимаете, что код в таком виде никто читать не будет? Используйте теги - слева вверху окна ввода сообщения есть кнопка.
1
SamLokers
0 / 0 / 0
Регистрация: 07.10.2013
Сообщений: 52
18.11.2013, 17:42  [ТС] #3
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
145
146
147
148
149
#include <iostream>
#include <string>
#include <fstream>
using namespace std;
 
string s = "D:/results.txt";
class elem{
public:
int i;
elem *pN;
};
 
class list{
elem *a;
 
elem *pa;
elem *pb;
elem *c;
elem *e;
elem *p;
int d;
public:
list(){
a = nullptr;
 
}
~list(){}
void addElement(int i){
if (a != nullptr)
{
elem *cur = new elem;
cur = a;
while (cur->pN != nullptr)
{
cur = cur->pN;
}
elem *ne = new elem;
ne->i = i;
ne->pN = nullptr;
cur->pN = ne;
 
}
else
{
elem *ne = new elem;
ne->i = i;
ne->pN = nullptr;
a = ne;
}
}
void getList(ofstream &f, string mess){
f.open(s, ios::app);
if (f.fail()){
cout << "\n Помилка відкриття файлу";
}
if (a != nullptr)
{
elem *cur = new elem;
cur = a;
f << mess << endl;;
f << "\n========================================================= =====================\n";
while (cur != nullptr)
{
f << "|" << cur->i << "| ";
cur = cur->pN;
}
f << "\n========================================================= =====================\n";
}
f.close();
}
void Append(int d){
elem *q = new elem;
q->i = d;
q->pN = nullptr;
if (c == nullptr)
c = q;
else
e->pN = q;
e = q;
}
 
list intersection(list b, list newl)
{
pa = a;
pb = b.a;
c = nullptr;
e = nullptr;
while ((pa != nullptr) && (pb != nullptr)){
if (pa->i < pb->i){
d = pa->i;
pa = pa->pN;
}
else if (pa->i > pb->i)
{
d = pb->i;
pb = pb->pN;
}
else {
d = pa->i;
pa = pa->pN;
pb = pb->pN;
}
newl.addElement(d);
}
p = nullptr;
if (pa != nullptr) {
p = pa;
}
if (pb != nullptr) {
p = pb;
}
while (p != nullptr) {
newl.addElement(p->i);
p = p->pN;
}
return newl;
}
 
};
 
int main()
{
setlocale(LC_ALL, "Rus");
ofstream ofs(s);
ofs.close();
const int n = 7;
list a;
cout << "Введiть " << n << " елементiв\n";
for (int i = 0; i < n; i++)
{
int s;
cin >> s;
a.addElement(s);
}
list b;
cout << "Введiть " << n + 5 << " елементiв\n";
for (int i = 0; i < n + 5; i++)
{
int s;
cin >> s;
b.addElement(s);
}
list c;
a.getList(ofs, "Список А");
b.getList(ofs, "Список Б");
c = a.intersection(b, c);
c.getList(ofs, "Результат об'єднання ");
return 0;
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.11.2013, 17:42
Привет! Вот еще темы с ответами:

Объединение, пересечение, разность множеств - C++
#include &quot;stdafx.h&quot; #include &lt;fstream&gt; #include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;clocale&gt; #include &lt;math.h&gt; ...

Объединение множеств. Некорректная обработка - C++
Подскажите, пожалуйста, почему в 3-ий if не передается значения Set a, Set b Set a; Set b; Set d; Set c; if(choice==1)...

Объединение, пересечение и разность множеств с помощью оператора SWITCH - C++
Помогите пожалуйста написать программу объединение,пересечение и разность множеств с помощью оператора SWITCH ....ввод элементов с...

Класс множество, не работают функции объединение и разность множеств - C++
Реализован класс множество. В алгоритме не работают 2 функции, объединение и разность множеств. #include &lt;iostream&gt; #include &lt;conio.h&gt; ...


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

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

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