0 / 0 / 1
Регистрация: 23.04.2014
Сообщений: 94
1

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

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

Author24 — интернет-сервис помощи студентам
Не хватает опыта понять ошибку

Здравствуйте! Никак не получается тот же результат хотя проверял несколько раз вот само задание:
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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.08.2014, 19:58
Ответы с готовыми решениями:

Ошибка при компиляции. Класс "множество" и основные операции с ним
При компиляции возникает ошибка( фото прикрепил). Помогите пожалуйста. Заранее благодарен. ...

Связный список (создать и реализовать операции над ним)
Помогите, пожалуйста, доделать задание. Мне нужно создать связный список и реализовать операции над...

заполнение двумерного массива из одномерного и дальнейшие операции над ним
короч на зачете дали задание вроде сделал, но не работает так как надо( задание: дан одномерный...

Класс "множество целых чисел" и операции над ним
Здравствуйте. Нужно создать класс &quot;множество целых чисел&quot;. Реализовать над ним операции...

2
0 / 0 / 1
Регистрация: 23.04.2014
Сообщений: 94
19.08.2014, 09:29  [ТС] 2
Ребят проблему решил, отбой. На 23 строчке оператор присваивания вместо сравнения. Блин столько времени убил...Надо быть внимательней)
0
2270 / 1762 / 740
Регистрация: 27.07.2012
Сообщений: 5,237
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
19.08.2014, 10:48
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.08.2014, 10:48
Помогаю со студенческими работами здесь

Класс Полином и операции над ним
Проблема в том, что программа считает неправильно при сложении полиномов ,умножении, вычитании. где...

Создать класс mySet, реализующий множество символов. Реализовать операции работы с ним
+, -, *. Операндами этих операций могут выступать как сами множества, так и символы (char): ...

Класс "множество" и основные операции с ним
Помогите пожалуйста Описать класс “множество”, позволяющий выполнять основные операции —...

Класс "множество" и основные операции с ним
Доброго времени суток!:) Получил тут задание следующего содержания: Описать класс «множество»,...

StringGrid и операции над ним
Из элементов массива Р сформировать массив М той же размерности по правилу: если номер четный, то...

Двуменый массив, операции над ним.
Дан двумерный массив чисел. Найти значение максимального элемента. если таких несколько, определить...

выделил текст и сделал операции над ним
суть задачи: есть допустим поле вода в катором написано &quot; привет мир &quot; и кнопка-ссылка....


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru