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

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

Восстановить пароль Регистрация
 
Кателевский ВН
 Аватар для Кателевский ВН
0 / 0 / 1
Регистрация: 23.04.2014
Сообщений: 46
18.08.2014, 19:58     Класс "Множество" и операции над ним #1
Не хватает опыта понять ошибку

Здравствуйте! Никак не получается тот же результат хотя проверял несколько раз вот само задание:
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 после добавления СВА:{СВ А}


А вот что у меня получается:
Миниатюры
Класс "Множество" и операции над ним  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.08.2014, 19:58     Класс "Множество" и операции над ним
Посмотрите здесь:

C++ Описать класс "множество", позваляющий выполнять основные операции
Класс: Реализация через битовое поле класса "Множество" C++
C++ Ввести класс для работы с объектом "множество целых чисел"
Разработать класс "множество целых чисел" в соответствии со следующим заданием C++
Описать класс "множество", позволяющий выполнять основные операции - добавления и удаление элемента, пересечение, множеств, объединение и разность мно C++
Шаблонный класс "множества". Операции над множествами C++
C++ Описать класс "множество" вещественных чисел, позволяющий выполнять основные операции
Класс "Множество". Не работает деструктор C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Кателевский ВН
 Аватар для Кателевский ВН
0 / 0 / 1
Регистрация: 23.04.2014
Сообщений: 46
19.08.2014, 09:29  [ТС]     Класс "Множество" и операции над ним #2
Ребят проблему решил, отбой. На 23 строчке оператор присваивания вместо сравнения. Блин столько времени убил...Надо быть внимательней)
John Prick
754 / 687 / 123
Регистрация: 27.07.2012
Сообщений: 1,974
Завершенные тесты: 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;
}
Yandex
Объявления
19.08.2014, 10:48     Класс "Множество" и операции над ним
Ответ Создать тему
Опции темы

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