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

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

Войти
Регистрация
Восстановить пароль
 
Кателевский ВН
0 / 0 / 1
Регистрация: 23.04.2014
Сообщений: 48
#1

Класс "Множество" и операции над ним - C++

18.08.2014, 19:58. Просмотров 823. Ответов 2
Метки нет (Все метки)

Не хватает опыта понять ошибку

Здравствуйте! Никак не получается тот же результат хотя проверял несколько раз вот само задание:
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
#include <iostream>
using namespace std;
const int MaxSize = 100;
class Set{
    int len;
    char members[MaxSize];
    int find(char ch);
public:
    Set(){len = 0;}
    int getLength(){return len;}
    void showset();
    bool isMember(char ch);
    Set operator +(char ch);
    Set operator -(char ch);
    Set operator +(Set ob2);
    Set operator -(Set ob2);
   
 
};
int Set::find(char ch){
    int i;
    for(i=0; i < len; i++)
        if(members[i] = ch)
            return i;
 
    return -1;
}
 
void Set::showset(){
    cout << "{";
    for(int i = 0; i < len; i++)
        cout << members[i] << " ";
 
    cout << "}\n";
}
 
bool Set::isMember(char ch){
    if(find(ch) != -1) return true;
    return false;
}
 
Set Set::operator +(char ch){
    Set newset;
 
    if(len == MaxSize){
          cout<< "Mnogestvo zapolneno.\n";
          return *this;
        }
        newset = *this;
        if(find(ch)  == -1)
        {
            newset.members[newset.len] = ch;
            newset.len++;
        }
        return newset;
    }
 
    Set Set::operator -(char ch){
        Set newset;
        int i = find(ch);
        for(int j = 0; j < len; j++)
        if(j != i) newset = newset + members[j];
 
        return newset;
    }
 
    Set Set::operator+(Set ob2)
    {
        Set newset = *this;
        for(int i = 0; i < ob2.len; i++)
            newset = newset + ob2.members[i];
 
        return newset;
    }
 
    Set Set::operator -(Set ob2)
    {
        Set newset = *this;
        for(int i = 0; i < ob2.len; i++)
            newset = newset - ob2.members[i];
        return newset;
    }
  
 
int main()
{
    Set s1;
    Set s2;
    Set s3;
 
    s1 = s1 + 'A';
    s1 = s1 + 'B';
    s1 = s1 + 'C';
 
    cout << "Mnogestvo s1 posle dobavleniya simvola A B C: ";
    s1.showset();
    cout << "\n";
    cout << "Testirovanie chlenstva s pomoschyu funkzii isMember().\n";
    if(s1.isMember('B'))
        cout << "B - chlen mnogestva s1. \n";
    else
        cout << "B - ne chlen mnogestva s1. \n";
    if(s1.isMember('T'))
        cout << "T - chlen mnogestva s1. \n";
    else
        cout << "T - ne chlen mnogestva s1. \n";
    cout << "\n";
    s1 = s1 - 'Г‚';
    cout<< "Mnogestvo s1 posle s1 = s1 - 'B':" ;
    s1.showset();
    s1 = s1 - 'A';
    cout << "Mnogestvo s1 posle s1 = s1 - 'A' :" ;
    s1.showset();
    s1 = s1 - 'C' ;
    cout << "Mnogestvo s1 posle s1 = s1 - 'C' :" ;
    s1.showset();
    cout << "\n";
    s1 = s1 + 'A';
    s1 = s1 + 'B';
    s1 = s1 + 'C' ;
    cout << "Mnogestvo s1 posle dobavleniya A B C :" ;
    s1.showset();
    cout << "\n";
    s2 = s2 + 'A';
    s2 = s2 + 'X';
    s2 = s2 + 'W';
    cout << "Mnogestvo s2 posle dobavleniya A X W:";
    s2.showset();
    cout << "\n";
    s3 = s1 + s2;
    cout << "Mnogestvo s3 posle s3 = s1 + s2:" ;
    s3.showset();
    s3 = s3 - s1;
    cout << "Mnogestvo s3 posle s3 = s3 - s1:";
    s3.showset();
    cout << "\n";
    cout << "Mnogestvo s2 posle s2 = s2 - s2:" ;
    s2 = s2 - s2;
    s2.showset();
    cout << "\n";
    s2 = s2 + 'C';
    s2 = s2 + 'B';
    s2 = s2 + 'A';
    cout << "Mnogestvo s2 posle dobavleniya C B A:";
    s2.showset();
    return 0;
}
Вот то что должно получиться:

Множество s1 после добавления символов ABC :{AB C
Тестирование членства с помощью функции isMember() .
В-чле нмножества s1 .
Т-не член множества s1 .
Множество s1 после s1=s1-'В' :{АС }
Множество s1 после s1=s1-'А':{С}
Множество s1 после s1=s1-'С':{}
Множество s1 после добавления ABC :{ABC }
Множество s2 после добавления АXW :{АXW}
Множество s3 после s3=s1+s2 :{АВСXW}
Множество s3 после s3=s3-si :{XW}
Множество s2 после s2=s2-s2:{}
Множество s2 после добавления СВА:{СВ А}


А вот что у меня получается:
0
Миниатюры
Класс "Множество" и операции над ним  
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.08.2014, 19:58
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Класс "Множество" и операции над ним (C++):

Шаблонный класс "множества". Операции над множествами - C++
Доброго времени суток. Суть моего задания заключается в создании шаблонного класса &quot;множества&quot; и затем операции над этими...

Описать класс "множество", позваляющий выполнять основные операции - C++
Описать класс &quot;множество&quot;, позваляющий выполнять основные операции: добавление и удаление элемента, перечисление,обьединение и разность...

Описать класс "множество" вещественных чисел, позволяющий выполнять основные операции - C++
# include &lt;iostream&gt; # include &lt;conio.h&gt; # include &lt;string&gt; # include &lt;stdio.h&gt; #include &lt;cstdlib&gt; const int CHUNK_SIZE=10; ...

Описать класс "множество", позволяющий выполнять основные операции - добавления и удаление элемента, пересечение, множеств, объединение и разность мно - C++
Люди помогите написать программу, очень нужно!!! Буду очень благодарный........ 1. Описать класс &quot;множество&quot;, позволяющий выполнять...

Создать класс комплексных чисел и ввести операции: "+", "-", "*", "/". - C++
пожалуйста-помогите написатьпрограмму!!! сижу на экзамене!!! вот само задание: создать класс комплексных чисел и ввести операции: &quot;+&quot;,...

Реализация класса "Множество" и операций над множествами - C++
нужно реализовать класс множество и операции над множествами в виде его методов естественно, собсно приведенный ниже код работает, однако...

2
Кателевский ВН
0 / 0 / 1
Регистрация: 23.04.2014
Сообщений: 48
19.08.2014, 09:29  [ТС] #2
Ребят проблему решил, отбой. На 23 строчке оператор присваивания вместо сравнения. Блин столько времени убил...Надо быть внимательней)
0
John Prick
824 / 757 / 152
Регистрация: 27.07.2012
Сообщений: 2,156
Завершенные тесты: 3
19.08.2014, 10:48 #3
Кателевский ВН, на будущее, чтобы таких ошибок избежать:
C++
1
2
3
4
5
6
7
int Set::find(const char ch){
    int i;
    for(i=0; i < len; i++)
        if(ch == members[i]) // если вдруг поставишь "=", будет ошибка компиляции.
            return i;
     return -1;
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.08.2014, 10:48
Привет! Вот еще темы с ответами:

Создать абстрактный класс "Издание" и производные классы "Книга", "Статья", "Электронный ресурс" - C++
1. Создать абстрактный класс Издание с методами, позволяющими вывести на экран информацию об издании, а также определить является ли данное...

Создать класс "Книга" с полями "название книги", "количество страниц", "год издания" - C++
Создать класс Книга поля: название книги,количество страниц,год издания методы: вычислить сколько лет книге и количество дней прошедших...

Создать класс "Вентилятор" содержащий в себе классы: "Двигатель", "Контроллер", "Пульт управления" - C++
Помогите с кодом написания задачи, не понимаю как написать классы в классе. Нужно создать класс &quot;вентилятор&quot; содержащий в себе классы:...

Разработать класс "Счет физического лица" и обеспечить возможность работы с ним - C++
-продумать атрибуты класса и инкапсулировать их в закрытой части интерфейса класса; -определить в классе по крайней мере три...


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

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

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