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

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

Войти
Регистрация
Восстановить пароль
 
mixasikk
0 / 0 / 0
Регистрация: 22.12.2013
Сообщений: 9
#1

Помогите для класса перегрузить операторы +, -, [] - C++

23.12.2013, 19:42. Просмотров 241. Ответов 0
Метки нет (Все метки)

Пожалуйста, помогите для класса massiv перегрузить функции +, -, [] используя шаблоны функции

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
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <windows.h>
 
using namespace std;
 
class comp
{
private:
    double re;
    double im;
public:
    comp();
    ~comp(){cout<<"it was deleted"<<endl;}
    comp(double Re, double Im);
    comp(const comp &f);
 
    comp operator - (const comp &);  
    comp operator + (const comp &);  
    comp& operator = (const comp &);  
    friend istream& operator>>(istream&, comp&);
    friend ostream& operator<<(ostream&, comp&);
 
};
 
comp::comp()
{
re=NULL;
im=NULL;
}
 
comp::comp(double cel, double mnim)
{re=cel, im=mnim;}
 
comp::comp(const comp &f){
    re = f.re;
    im = f.im;
}
 
 
comp comp::operator - (const comp & f)
{   
    re = re - f.re;
    im = im - f.im;
    return *this;
};
 
comp comp::operator + (const comp & f)
{
    re = re + f.re;
    im = im + f.im;
    return *this;
};  
 
comp& comp::operator = (const comp & f)
{   
    this -> re = f.re;
    this -> im = f.im;
    return *this;
};
 
istream& operator>>(istream& in, comp& f)
{   cout<<"Re=";
    in>>f.re;
    cout<<"Im=";
    in>>f.im;
 
    return in;
};
 
ostream& operator<<(ostream& out, comp& f)
{
    out<<f.re;
    if(f.im>=0)
    {out<<"+"<<f.im<<"i"<<endl;}
    else
    {out<<"-"<<abs(f.im)<<"i"<<endl;}
    return out;
};
 
 
template <class ALLDATA>
class massiv
{
private:
    int size;
    ALLDATA *mas;
public:
    massiv();
    ~massiv(){delete [] mas;}
    massiv(int size);
 
    massiv(const massiv &f);
    massiv operator - (const massiv &);  
    massiv operator + (const massiv &);  
    massiv& operator = (const massiv &);  
    //friend istream& operator>>(istream&, massiv&);
    //friend ostream& operator<<(ostream&, massiv&);
 
 
    void input()
    {   
        cout<<"enter massiv "<<endl;
        //cin>>size;
        for(int i=0; i<size; i++)
        {
            cin>>mas[i];
        }
    }
 
    void output()
    {
        for(int i=0; i<size; i++)
        {
            cout<<mas[i];
        }
    }
 
};
 
template<class ALLDATA>
massiv<ALLDATA>::massiv()
{
    size=0;
    mas=new ALLDATA [size];
}
 
template<class ALLDATA>
massiv<ALLDATA>::massiv(const massiv &f)
{
    for(int i=0; i<f.size; i++)
    {
        mas[i]=f.mas[i];
    }
}
 
template<class ALLDATA>
massiv<ALLDATA>::massiv(int t)
{   
    size=t;
    mas=new ALLDATA[size];
}
 
 
 
template <class ALLDATA>
massiv<ALLDATA> massiv<ALLDATA>::operator + (const massiv & f)
{   
    massiv temp;
    temp.size = size;
    temp.mas = new ALLDATA[temp.size];
    for(int i=0; i<f.size; i++)
    {
        temp.mas[i]= mas[i] + f.mas[i];
    }
 
    return temp;
}
 
template <class ALLDATA>
massiv<ALLDATA> massiv<ALLDATA>::operator - (const massiv & f)
{
    massiv temp;
    temp.size = this -> size;
    temp.mas = new ALLDATA[temp.size];
 
    for(int i=0; i<temp.size; i++)
    {
        temp.mas[i]= this-> mas[i] - f.mas[i];
    }
 
    return temp;
 
}
 
template <class ALLDATA>
massiv<ALLDATA>& massiv<ALLDATA>::operator = (const massiv & f)
{
    if(this == &f)
    return *this;
    delete [] mas;
    size = f.size;
    mas = new ALLDATA[size];
    for(int i=0; i<f.size; i++)
    {
        mas[i]=f.mas[i];
    }
 
    return *this;
}
 
 
int main()
{   
    comp t1,t2;
    cin>>t1;
    t2=t1-t1;
    cout<<t2;
    cout<<"введите размер массива"<<endl;
    int n;
    cin>>n;
 
    massiv <comp> a(n);
    massiv <comp> b(n);
    massiv <comp> c(n);
    
    a.input();
    a.output();
    b.input();
    b.output();
    c=b-a;//с=b+a
    c.output();
 
    system("pause");
    return 0;
}
Добавлено через 1 час 53 минуты
Точнее не функции, а операторы для данного класса massiv

Добавлено через 11 минут
класс, находящийся в коде первым, для которого шаблон не определён, - комплексные числа, его надо бы использовать в качестве параметра в классе massiv

Добавлено через 16 часов 39 минут
ну пожалуйстаааа, откликнитесь кто-нибудь( прога ошибку выдаёт, хрен знает почему(

Добавлено через 16 минут
Ребяяят, спасите человека, разберитесь пожалуйста в чём ошибка
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.12.2013, 19:42
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Помогите для класса перегрузить операторы +, -, [] (C++):

Перегрузить операторы для класса Ромб. - C++
1. Опишите класс &quot;Ромб&quot; class Rhombus// Класс Ромб { float x,y, d1, d2 ; public: void input_Rhombus(); };Данные класса:...

Перегрузить операторы +=, -=, *=, /= для класса Rational - C++
дан класс Rational, который описывает рациональное число. В нем определены методы add, sub, mul и div, которые прибавляют к нему число,...

Как перегрузить операторы для шаблонного класса? - C++
Собственно задание: Нужно написать класс описывающий обычный вектор на плоскости. Для этого класса вам нужно реализовать сложение,...

Для класса Vector перегрузить операторы присваивания, сравнения, ввода и вывода - C++
срочно помогите написать программу, желательно с комментариями если можно)) Для класса Vector перегрузить операторы присваивания, ...

Как перегрузить операторы вне класса? - C++
как перегрузить операторы вне класса? class ErkarTiv { public: char a; void operator=(char* ); ErkarTiv...

Перегрузить операторы взятия из потока и помещения в поток у класса - C++
Имею такое задание: нужно написать класс с функциями сохранения в файл и чтения из файла набора экземпляров класса . У класса должны быть...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.12.2013, 19:42
Привет! Вот еще темы с ответами:

Перегрузить операторы = и [] для hash - C++
есть оператор который возвращает значение по ключу, как правильно написать оператор = для возможности писать такое hash = &quot;Moto...

Как правильно перегрузить операторы для собственных классов? - C++
Операторы перегрузки не выполняются. Мне кажется, я не правильно передаю объекты класса в функцию. Прошу обратить внимание на файл ...

Описать класс my_str и перегрузить для него операторы. - C++
Описать класс my_str, содержащий длину строки и указатель на ее первый символ. Определить для класса необходимые конструктор(ы),...

Как перегрузить операторы >> и << для структуры чтоб работалы итераторы? - C++
в файле двумерный массив вида 0 1 2 3 4 5 6 7 8 9 он считывает в двумерный вектор вот такой функцией if(!FileExists(FNAME_MATRIX))...


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

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

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