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

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

Восстановить пароль Регистрация
 
SamLokers
0 / 0 / 0
Регистрация: 07.10.2013
Сообщений: 52
18.11.2013, 17:34     Объединение и упорядочивание двух множеств #1
Пожалуйста помогите исправить код программы, он в некоторых случаях работает не верно. Очень срочно!!!

Пусть заданы два множества А и В в виде неупорядоченных числовых последовательностей. Создать программу, которая упорядочивает существующие множества и определяет объединения двух множеств порядка 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;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.11.2013, 17:34     Объединение и упорядочивание двух множеств
Посмотрите здесь:

объединение и упорядочивание массивов C++
Объединение множеств C++
C++ объединение множеств
C++ Осуществить все операции над элементами множеств: пересечение, объединение, ...
Объявить объединение из двух структур и структуру из двух объединений C++
C++ Объединение множеств. Некорректная обработка
C++ Объединение множеств(массивов)
Объединение, пересечение и разность множеств с помощью оператора SWITCH C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
W0lfdalE
7 / 7 / 0
Регистрация: 03.07.2013
Сообщений: 26
18.11.2013, 17:38     Объединение и упорядочивание двух множеств #2
Вы понимаете, что код в таком виде никто читать не будет? Используйте теги - слева вверху окна ввода сообщения есть кнопка.
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;
}
Yandex
Объявления
18.11.2013, 17:42     Объединение и упорядочивание двух множеств
Ответ Создать тему
Опции темы

Текущее время: 07:46. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru