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

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

Войти
Регистрация
Восстановить пароль
 
nicenice
3 / 3 / 0
Регистрация: 22.11.2011
Сообщений: 168
#1

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

16.05.2012, 00:27. Просмотров 450. Ответов 5
Метки нет (Все метки)

Нужно реализовать данный класс, я без понятия каким образом, пока написал только имена функций и сам класс. Там должны быть функции конструктор, деструктор, ввод, вывод, копирование, сложение множеств (+), пересечение множеств (*), разность (-), добавление в множество, проверка вхождения в множество. (Элементы хранятся в отсортированном порядке; поиск - двоичный)

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++
Шрёдинбаг (англ. Schroedinbug) — термин, используемый в программировании для описания программной ошибки, которая никак не проявляет себя,...

проверьте кто-нибудь - C++
я давно как-то создавал тему дек через массив.там в конце я написал что вроде прога рабоатет. через несколько дней я запустил её - вроде...

ну кто нибудь составит программу???????? - C++
ну кто нибудь составит программу????????ну кто нибудь составит программу????????ну кто нибудь составит программу????????ну кто нибудь...

кто нибудь из программистов знает? - C++
Кто нибудь из программистов знает, а то я запарился искать книги (вернее задачи) на классы, указатели,обьекты и т.д. В интернете очень...

кто нибудь знает?(про винмэйн) - C++
кто нибудь знает как, например в мфс инкапсулированы такие функции как winmain и windowproc в тело класса, что выполнение начинается...

Кто-нибудь найдите ошибку в RSA кодировании!!! - C++
Стандартная задача. Вводятся p,q, e, d. Нужно по формуле ks=ks*c*Mod n, где n=p*q, c-ASCII код симвода. загвоздка в том что текста вводится...

Кто нибудь знает как написать игру на С ?) - C++
Зраствуйте Можно ли написать крестики нолики на С ? И как это сделать ? Дайте идею или код. Спасибо за внимание.

не мог бы кто нибудь объяснить ошибку с темплейтами - C++
Добрый день, (или вечер) не мог бы кто нибудь помочь разобраться с ошибкой с темплейтами в пространстве Warning567 объявлено...

Кто-нибудь знает, что это за ошибка? - C++
Кто-нибудь знает, что это за ошибка, когда она возникает и что делать? command line error MIDL1004: cannot execute C preprocessor...

Кто-нибудь создаёт потоки как в MSDN? - C++
Приветствую, жизнь заставила писать на 2005м MVS и использовать MS SQL SERVER (требует ObjectARX). Вообщем, раньше было какое-то...

Интерфейсы в с++ дайте кто нибудь годный рабочий пример - C++
Суть вопроса: нигде не могу найти рабочий пример использования интерфейсов, то есть когда есть интерфес, есть класс внутри длл-ки и всё это...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Avazart
7100 / 5277 / 267
Регистрация: 10.12.2010
Сообщений: 23,266
Записей в блоге: 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
7100 / 5277 / 267
Регистрация: 10.12.2010
Сообщений: 23,266
Записей в блоге: 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
7100 / 5277 / 267
Регистрация: 10.12.2010
Сообщений: 23,266
Записей в блоге: 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     Кто-нибудь реализовывал класс множество?
Ответ Создать тему
Опции темы

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