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

Кто-нибудь реализовывал класс множество? - C++

Восстановить пароль Регистрация
 
nicenice
3 / 3 / 0
Регистрация: 22.11.2011
Сообщений: 168
16.05.2012, 00:27     Кто-нибудь реализовывал класс множество? #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
#include<iostream>
using namespace std;
class set
{
    char *mnosh;
    int dinam;
public:
    set(int n);
    ~set();
    void vvod();
    void vivod();
    void kopirovanie();
    void operator+(); //сложение
    void operator*(); //пересечение
    void operator-(); //разность
    void dobavlenie();
    void proverka();
    void dvoichn_poisk();
};
set::set(int n)
{
    dinam=n;
    mnosh=new char[dinam];
}
set::~set()
{
    delete[]mnosh;
}
void set::vvod()
{
    for(int i=0;i<dinam;++i)
    cin>>mnosh[i];
}
void set::vivod()
{
    for(int i=0;i<dinam;++i)
    cout<<mnosh[i];
}
void set::dvoichn_poisk()
{
int left=0,rigth=dinam-1;
int x=0;
while(right-left>1)
    int dinam=(left+right)/2;
if(x>mnosh[dinam])
    left=dinam;
else if (x<mnosh[dinam])
    right=dinam;
else right=left=dinam;
}
 
//ел в отсорт порядке
int i=0, j=0;
while(i<len1 && j<len2) 
{
    if(str1[i]==str2[j])
    {
        str3[++k]=str1[i];
        ++i;++j;
    else if(str1[i]<str2[j])
        ++i;
    else ++j;
Так вот, может кто-нибудь реализовывал этот класс?
Если нет, посоветуйте хорошую книгу, по "объектно-ориентир. про-ю" которая поможет мне написать программу.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.05.2012, 00:27     Кто-нибудь реализовывал класс множество?
Посмотрите здесь:

кто нибудь из программистов знает? C++
проверьте кто-нибудь C++
ну кто нибудь составит программу???????? C++
C++ кто нибудь знает?(про винмэйн)
Кто-нибудь знает, что это за ошибка? C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Avazart
 Аватар для Avazart
6897 / 5137 / 252
Регистрация: 10.12.2010
Сообщений: 22,574
Записей в блоге: 17
16.05.2012, 01:08     Кто-нибудь реализовывал класс множество? #2
Хотел заметить что такой класс уже реализован в STL (std::set<>,алгоритмы std::set_different идр)
nicenice
3 / 3 / 0
Регистрация: 22.11.2011
Сообщений: 168
16.05.2012, 01:11  [ТС]     Кто-нибудь реализовывал класс множество? #3
Я знаю. Мне надо его ещё раз реализовать.
Avazart
 Аватар для Avazart
6897 / 5137 / 252
Регистрация: 10.12.2010
Сообщений: 22,574
Записей в блоге: 17
16.05.2012, 02:08     Кто-нибудь реализовывал класс множество? #4
Ну тогда это сильно объемная задача,её нужно поделить на более мелкие.
Например
Изучи шаблоны, и построй алгоритмы на подобии стандартных и проверь на стандартных контейнерах
Реализуй класс set определив:
1. Как будет выделяться память
2. Определи методы для изменения размера массива,добавления и удаления элементов итд
3. Перегрузи операторы +-= << >>
4. Создай класс итератор для твоего set
итд.

И впринципе подойдет для начала любая нормальная книга по С++. Например Шилд,Страдоструп ...

Главное понимать что должен делать твой класс и как.
nicenice
3 / 3 / 0
Регистрация: 22.11.2011
Сообщений: 168
16.05.2012, 09:59  [ТС]     Кто-нибудь реализовывал класс множество? #5
Это всё легко звучит. Вот например перегрузка оператора, как перегрузить знаю, а вот что писать в свойствах перегрузки без понятия. Память динамическая, впринципе у меня есть конструктор и деструктор, с
C++
1
new
и
C++
1
delete
этого разве не достаточно?
Avazart
 Аватар для Avazart
6897 / 5137 / 252
Регистрация: 10.12.2010
Сообщений: 22,574
Записей в блоге: 17
16.05.2012, 14:52     Кто-нибудь реализовывал класс множество? #6
а вот что писать в свойствах перегрузки без понятия
Что значит свойства перегруки?

Вот я начал писать наскорую руку, думаю как пример сойдет

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
namespace my
{
using namespace std;
//---------------------------------------------------------------------------
template<class T>
class set
{
    T *mem;
    int fsize;
public:
    set(int size){fsize=size;mem=new T[fsize];}
    set(set &obj)
       {
       fsize=obj.size();
       mem=new T[fsize];
       for(int i=0;i<size();i++)
       mem[i]=obj[i];
       }
    ~set() { delete[] mem; }
    int size(){return fsize;};
    void resize(int newsize)
     {
     T* p=new T[newsize];
     for(int i=0;i<(newsize<size()?newsize:size());i++) p[i]=mem[i];
     fsize=newsize;
     delete mem;
     mem=p;
     }
    void set::input() {for(int i=0;i<size();++i) cin>>mem[i];}
    void set::print(){for(int i=0;i<size();++i) cout<<mem[i]<<endl;}
 
    T &operator[](int index){ return mem[index];};
 
    set operator+(set obj)
     {
     set temp(size()+obj.size());
     for(int i=0;i<size();i++)  temp[i]=mem[i];
     for(int j=size();j<temp.size();j++) temp[j]=obj[j-size()];
 
     return temp;
     }
 
 
    void operator*(); //пересечение
    void operator-(); //разность
 
    void dobavlenie();
    void proverka();
    void dvoichn_poisk();
};
//---------------------------------------------------------------------------
}; //my
//---------------------------------------------------------------------------
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
int _tmain(int argc, _TCHAR* argv[])
{
system("chcp 1251");
 
my::set<int> s1(3),s2(2);
 
s1[0]=0;
s1[1]=1;
s1[2]=2;
cout<<"s1"<<endl;
s1.print();
 
s2[0]=4;
s2[1]=5;
 
cout<<"s2"<<endl;
s2.print();
 
cout<<"s1+s2"<<endl;
(s1+s2).print();
 
cout<<"s3"<<endl;
my::set<int> s3(s1);
s2.print();
 
system("pause");
return 0;
}
//---------------------------------------------------------------------------
Добавлено через 57 минут
http://habrahabr.ru/post/123417/
Yandex
Объявления
16.05.2012, 14:52     Кто-нибудь реализовывал класс множество?
Ответ Создать тему
Опции темы

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