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

Перегрузка операций

09.01.2012, 19:12. Показов 3620. Ответов 5
Метки нет (Все метки)

Задание у меня перегрузить операции:
+ добавить элемент в множество;
* пересечение множеств;
int() мощность множества.

Вот как раз с мощностью я разобраться не могу.

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
#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <string>
#include "locale"
 
using namespace std;
 
class Mnozh // класс "Множество"
{
    private:
        char *mnozh; // переменная, хранящая элементы множества
    
    public:
        Mnozh(); // конструктор по умолчанию
        Mnozh(char *word); // конструктор инициализации
        //~Mnozh() { cout << "Destructor work\n"; } 
 
        void input(); // метод ввода множества
        void output(); // метод вывода множества
        void swap(Mnozh & a); // метод замены
 
        Mnozh & operator = (Mnozh & n) // перегрузка оператора "="
        {
            if (this!=&n) Mnozh(n).swap(*this);
            return *this;
        }
 
        void  operator + (char s) // перегрузка оператора "+", которая добавляет элемент 
        {
            char buf[256];
            int i,j;
 
            for (i=0; mnozh[i]!='\0'; i++);
            mnozh[i]=s; mnozh[i+1]='\0';
 
        }
 
    /*void operator % (int w) // перегрузка оператора "/ вместо int ()", мощность множества
        {
            char buf[256];
            int i,j;
 
            for (i=0; mnozh[i]!='\0'; i++);
            mnozh[i]=w;
        }*/
 
 
        Mnozh & operator * (Mnozh &a) // перегрузка оператора "*", которая производит пересечение множеств
        {
            char temp[256];
            int i,j,k=0;
 
            for (i=0; mnozh[i]!='\0'; i++)
            {
                for (j=0; a.mnozh[j]!='\0'; j++)
                    if (a.mnozh[j]==mnozh[i]) { temp[k++]=mnozh[i]; break; } 
                temp[k] = NULL;
            }
            strcpy(mnozh,temp);
            return *this;
        }
};
 
Mnozh::Mnozh() // описание конструктора по умолчанию
{
    mnozh = new char[strlen("Default")+1];
    strcpy(mnozh,"Default");
}
 
Mnozh::Mnozh(char *word) // описание конструктора инициализации
{
    mnozh = new char[strlen(word)+1];
    strcpy(mnozh,word);
}
 
void Mnozh::input() // описание метода ввода данных
{
    char str[256];
 
    cout << "Enter mnozhestvo >> ";
    cin >> str;
 
    mnozh = new char[strlen(str)+1];
    strcpy(mnozh,str);
}
 
void Mnozh::output() // описание метода вывода данных
{
    cout << "MNOZESTVO : " << mnozh << endl;
}
 
void Mnozh::swap(Mnozh &a) // описание метода замены двух объектов
{
    std::swap(mnozh,a.mnozh);
}
 
int main() // главная функция
{
    setlocale(LC_ALL, "");
    Mnozh a("House");
    Mnozh b("Real");
 
    a+'y';
    
 
    a.output();
    b.output();
 
    a=a * b;
    //a%17;
    
    
    a.output();
    b.output();
    getch();
    return 0;
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.01.2012, 19:12
Ответы с готовыми решениями:

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

ПЕРЕГРУЗКА ОПЕРАЦИЙ
Всем добрый день.Нужна помощь по перегрузкам операций.Написать программу.Кто сможет помочь,буду...

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

Перегрузка операций
Данная программа выполянет операции с дробями. Но у меня возникла проблема. Я создал сервисную...

5
go
Эксперт С++
3644 / 1376 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
09.01.2012, 19:31 2
C++
1
2
3
4
operator int ()
{
    return strlen (mnozh);
}
Добавлено через 47 секунд
Полный код
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
#include <iostream>
#include <conio.h>
#include <string>
#include "locale"
 
using namespace std;
 
class Mnozh // класс "Множество"
{
        private:
                char *mnozh; // переменная, хранящая элементы множества
 
        public:
                Mnozh(); // конструктор по умолчанию
                Mnozh(char *word); // конструктор инициализации
                //~Mnozh() { cout << "Destructor work\n"; }
 
                void input(); // метод ввода множества
                void output(); // метод вывода множества
                void swap(Mnozh & a); // метод замены
 
                Mnozh & operator = (Mnozh & n) // перегрузка оператора "="
                {
                        if (this!=&n) Mnozh(n).swap(*this);
                        return *this;
                }
 
                void  operator + (char s) // перегрузка оператора "+", которая добавляет элемент
                {
                        char buf[256];
                        int i,j;
 
                        for (i=0; mnozh[i]!='\0'; i++);
                        mnozh[i]=s; mnozh[i+1]='\0';
 
                }
 
        /*void operator % (int w) // перегрузка оператора "/ вместо int ()", мощность множества
                {
                        char buf[256];
                        int i,j;
 
                        for (i=0; mnozh[i]!='\0'; i++);
                        mnozh[i]=w;
                }*/
 
 
                Mnozh & operator * (Mnozh &a) // перегрузка оператора "*", которая производит пересечение множеств
                {
                        char temp[256];
                        int i,j,k=0;
 
                        for (i=0; mnozh[i]!='\0'; i++)
                        {
                                for (j=0; a.mnozh[j]!='\0'; j++)
                                        if (a.mnozh[j]==mnozh[i]) { temp[k++]=mnozh[i]; break; }
                                temp[k] = NULL;
                        }
                        strcpy(mnozh,temp);
                        return *this;
                }
                operator int ()
                {
                    return strlen (mnozh);
                }
};
 
Mnozh::Mnozh() // описание конструктора по умолчанию
{
        mnozh = new char[strlen("Default")+1];
        strcpy(mnozh,"Default");
}
 
Mnozh::Mnozh(char *word) // описание конструктора инициализации
{
        mnozh = new char[strlen(word)+1];
        strcpy(mnozh,word);
}
 
void Mnozh::input() // описание метода ввода данных
{
        char str[256];
 
        cout << "Enter mnozhestvo >> ";
        cin >> str;
 
        mnozh = new char[strlen(str)+1];
        strcpy(mnozh,str);
}
 
void Mnozh::output() // описание метода вывода данных
{
        cout << "MNOZESTVO : " << mnozh << endl;
}
 
void Mnozh::swap(Mnozh &a) // описание метода замены двух объектов
{
        std::swap(mnozh,a.mnozh);
}
 
int main() // главная функция
{
        setlocale(LC_ALL, "");
        Mnozh a("House");
        Mnozh b("Real");
 
        a+'y';
 
 
        a.output();
        b.output();
        cout << endl << a;
        a=a * b;
        //a%17;
 
 
        a.output();
        b.output();
        getch();
        return 0;
}
2
2 / 2 / 0
Регистрация: 17.12.2010
Сообщений: 12
09.01.2012, 19:46  [ТС] 3
go, спасибо,а есть возможность вызвать этот оператор отсюда ?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
int main() // главная функция
{
        setlocale(LC_ALL, "");
        Mnozh a("House");
        Mnozh b("Real");
 
        a+'y';
        
 
        a.output();
        b.output();
 
        a=a * b;
        //a%17;
        
        
        a.output();
        b.output();
        getch();
        return 0;
}
1
go
Эксперт С++
3644 / 1376 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
09.01.2012, 19:54 4
Цитата Сообщение от manoichi Посмотреть сообщение
,а есть возможность вызвать этот оператор отсюда ?
Надеюсь понял правильно.
C++
1
2
int aa = static_cast<int> (a); // Так
int bb = b; // Или так
2
2 / 2 / 0
Регистрация: 17.12.2010
Сообщений: 12
09.01.2012, 20:04  [ТС] 5
Спасибо! Разобрался )
1
0 / 0 / 0
Регистрация: 11.11.2013
Сообщений: 5
13.11.2013, 12:48 6
go, Привет дружище,помоги пожалуйста мне надо по типу этого сделать,может подскажешь,раньше работал в основном на делфи и резко на С перешли,я не могу понять что куду =(
вот задание:

АТД - множество с элементами типа char. Дополнительно перегрузить следующие операции:
+ добавить элемент в множество (типа set+char);
* пересечение множеств;
int() мощность множества.

БУДУ ОЧЕНЬ БЛАГОДАРЕН ТЕБЕ!Спасибо заранее!
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.11.2013, 12:48

Перегрузка операций
Не могу понять в чем ошибка. Нужно вводитьномер в формате (123) 456-789 Но почему то только...

Перегрузка операций
Разработайте программу на языке С++, используя пользовательский тип данных – классы и перегрузку...

Перегрузка операций << и >>
Всем добрый день.. У меня такая проблема, не получается перегрузить операторы &lt;&lt; и &gt;&gt; для своего...

Перегрузка операций
Всем привет! Помогите пожалуйста с перегрузкой операций. У меня есть вот 4-ая лаба #include...


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

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

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