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

Шаблон класса "множество" - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ От куда начать решать http://www.cyberforum.ru/cpp-beginners/thread305896.html
Доброе время суток! моя задаче написать программу для вычисления многочленов на С++. Последовательность многочленов определяется следующим образом: Н0(х)=1, Н1(х)=х, … ,НК(х)= (х-К)НК-1(х)+(х+К)НК-2(х). Даны действительные числа А0..АN. Получить многочлен А0Н0(х)+…+АNНN(х). Но проблема не в написании программы, а в том, что я не могу понять, алгоритмма. Вот что смог надумать:...
C++ syscalls.h Доброго вечер народ)... вот решил как нибудь обойтись без stdio.h { про iostrem.h знаю}...вот и наткнулся на syscalls.h такую библиотеку... тока что т у меня его нет) кто нибудь подскажет что там про read и write написанно... вот тут наткнулся http://www.cyberforum.ru/cpp-beginners/thread305886.html
как вытащить из for(...){...; b=5;...} переменную b с новым значением чтоб потом ее использовать C++
как вытащить из for(...){...; b=5;...} переменную b с новым значением чтоб потом ее использовать.
C++ Бинарное дерево. Поиск числа ветвей по значению
Задание: Написать программу, к-я находит длину пути (число ветвей) от корня до ближайшего значения x. Если такой вершины нет, то вернуть -1. Господа, нуждаюсь в вашей помощи. Я написал что-то похожее на программу, но работает она то корректно, то нет. Порой функция возвращает все нормально, т.е. если вводим x , которое находится на 3 ветви от корня, то функция возвращает 3. все гуд.. а порой...
C++ Создать список вещественых чисел.Найти разность между наибольшим и наименьшим элементами. http://www.cyberforum.ru/cpp-beginners/thread305856.html
Создать список вещественых чисел.Найти разность между наибольшим и наименьшим элементами. Помогите пожалуйста!Вообще эти списки не разбираю(( Добавлено через 1 час 49 минут ВОТ ЧТО ПОЛУЧИЛОСЬ!!Нашла минимум и максимум!Помгите найти разность.Пожалуйста!!! /--------------------------------------------------------------------------- #include <vcl.h>
C++ Удаления узла бинарного дерева(не удаляя поддеревья) Помогите пожалуста чтото придумать ато ваще не приходит нечего в голову. У меня есть функция поиска элемента SearchTree(top,n1);//первая графа вершина дерева,втарая номер элемента структура вот такая вот struct Info { int n; char name; }; struct tree { подробнее

Показать сообщение отдельно
Selector_Al
0 / 0 / 0
Регистрация: 25.05.2011
Сообщений: 12
27.05.2011, 00:03     Шаблон класса "множество"
Задание:
Создать шаблон класса "множество", позволяющий выполнять основные операции - добавление и удаление элемента, пересечение, объединение и разность множеств.

Вот что я набросал... класс создал.. осуществил ввод/вывод... затем делал добавление элемента.. и тут наткнулся на проблему, ну и соответственно, дальше не пошло ничего. Помогите пожалуйста! Укажите на ошибки!


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
148
149
150
151
152
153
154
155
#include "StdAfx.h"
#include "iostream"
using namespace std;
 
template<class type>
class set
{
    private:
        type *mass; //указатель, хранящий адрес размещения массива(содержащего множество) в динамической памяти
        unsigned size; //размер массива
        int find(type); //ф-ия закрыта, тк она не используется вне шаблона класса
    public:
        //-----Конструкторы:
        set(){size=0;};
        set(int); //создает объект
        set(const set&); //конструктор копирования (создает новый объект с параметрами старого)
        //=================
 
        //-----Деструктор:
        ~set(){
            if(mass)
                delete [] mass;} //деструктор
        //=================
 
        //-----Операции:
        //void show_set();
        type& operator [] (int); //неконстантная версия - для записи
        const type& operator [] (int) const; //константная версия - для чтения
        set operator + (type); //добавление элемента
        //set operator - (type); //удаление элемента
        //const size_t Size() const {return size;}
        //==============
 
        int get_size() const {return size;} //метод, возвращающий размерность массива i-го объекта
};
 
template<class type> //возвращает индекс элемента, задаваемого параметром mas, или -1, если элемент не найден
int set<type>::find(type mas)
{
    int i;
    for(i=0;i<size;i++)
        if(mass[i]==mas)
            return i;
    return -1;
}
 
template<typename type2> //перегрузка оператора вывода в поток (вне класса)
std::ostream& operator << (std::ostream& os, const set<type2>& Ob)
{
    for(int i=0; i<Ob.get_size(); ++i)
    {
         os<<Ob[i]<<" ";
    }
    os<<'\n';
    return os;
}
 
template<class type>
set<type>::set(int n)
{
    size=n;
    if(n){
        mass=new type[size];
        for(int i=0; i<size; i++)
            cin>>mass[i];
    }
    else
        mass=0;
}
 
template<class type>
set<type>::set(const set& x)
{
    size=x.size;
    if(x.mass){
        mass=new type[size];
        for(int i=0;i<size;i++){
            mass[i]=x.mass[i];
        }
    }
    else
        mass = 0;
}
 
template<class type>
const type& set<type>::operator [] (int i) const{
        if(i<0||i>size){
            cout<<"Error"<<endl;
            exit(1);
        }
        return mass[i];
}
 
template<class type>
type& set<type>::operator [] (int i){
        if(i<0||i>size){
            cout<<"Error"<<endl;
            exit(1);
        }
        return mass[i];
}
 
template<class type>
set<type> set<type>::operator + (type mas)
{
    set newset;
    newset=*this; //дублируем существующее множество
    if(find(mas)==-1){ //если не найден, можно добавить
        newset.mass[newset.get_size()]=mas;
        newset.size++;
    }
    return newset; //возвращаем обновленное множество
}
 
/*template<typename type2> //перегрузка оператора ввода с консоли (вне класса)
std::istream& operator >> (std::ostream& is, const set<type2>& Ob)
{
    for(int i=0; i<Ob.get_size; ++i)
    {
         is>>Ob[i];
    }
    return is;
}*/
 
/*template<class type>
void set<type>::show_set(){
    for(int i=0;i<size;i++){
        cout<<mass[i]<<" ";
    }
    cout<<endl;
}*/
 
 
 
 
int main()
{
    setlocale(LC_ALL, "RUS");
    cout<<"Введите размер (положительное целое число) 1-го множества: (целые числа) "; int n; cin>>n;
    cout<<"Заполните множество:"<<endl;
    set<int> a(n);
    cout<<endl; n=0;
    cout<<"Введите размер (положительное целое число) 2-го множества: (вещественные числа) "; int m; cin>>m;
    cout<<"Заполните множество:"<<endl;
    set<float> b(m);
    cout<<endl;
    cout<<"Ваши множества:"<<endl;
    //a.show_set();
    cout<<a<<endl;
    cout<<b<<endl;
    a=a+'2';
    cout<<a<<endl;
    system("PAUSE");
    return 0;
}
За ранее благодарен!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 10:55. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru