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

Перегрузка оператора + - C++

Восстановить пароль Регистрация
 
lavengerl
0 / 0 / 0
Регистрация: 18.09.2011
Сообщений: 77
30.10.2011, 16:54     Перегрузка оператора + #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
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
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
#include <iostream>
#include <conio.h>
#include <fstream>
#include <string>
#include <stdlib.h>
using namespace std;
 
class TestContent
{
 
public:
 
int x,res;
string File;
    void Init();
    void ReadFile();
    void Read(int _i);
    void Show();
    void testing();
    void compare();
 
    friend TestContent operator+(TestContent left, TestContent right);
//  void operator +(const TestContent& ans) const;
    TestContent(string _File) //конструктор
    {
        cout<<"ctvoreno novui obekt klasy"<<endl;
        File=_File;
    }
 
    struct Task
    {
        char vopros[100];
        char a[30];
        char b[30];
        char c[30];
        char d[30];
        char e[30];
        int tru;
        int balls;
 
        bool operator ==(Task& ans)
        {
            if (strcmp (vopros , ans.vopros)==0)
                return true;
            else return false;
        }
 
//      string operator +(Task& ans); метод додавання символів в полі питання
 
    };  //array[100];
    
    Task mas[3];
    Task new_mas[6];
 
};
TestContent operator+(TestContent left, TestContent right) {
 TestContent Res("0");
    for(int i=0;i<3;i++)
            {
                Res.new_mas[1].vopros=left.mas[i].vopros;
            }
 
 
}
/*void TestContent::operator +(const TestContent& ans) const
        {
            for(int i=0;i<3;i++)
            {
            TestContent::new_mas[i].vopros=TestContent::mas[i].vopros;
            TestContent::new_mas[i].a=TestContent::mas[i].a;
            TestContent::new_mas[i].b=TestContent::mas[i].b;
            TestContent::new_mas[i].c=TestContent::mas[i].c;
            TestContent::new_mas[i].d=TestContent::mas[i].d;
            TestContent::new_mas[i].e=TestContent::mas[i].e;
            TestContent::new_mas[i].tru=TestContent::mas[i].tru;
            TestContent::new_mas[i].balls=TestContent::mas[i].balls;
            }
            for(int i=3;i<6;i++)
            {
            TestContent::new_mas[i].vopros=ans.mas[i].vopros;
            TestContent::new_mas[i].a=ans.mas[i].a;
            TestContent::new_mas[i].b=ans.mas[i].b;
            TestContent::new_mas[i].c=ans.mas[i].c;
            TestContent::new_mas[i].d=ans.mas[i].d;
            TestContent::new_mas[i].e=ans.mas[i].e;
            TestContent::new_mas[i].tru=ans.mas[i].tru;
            TestContent::new_mas[i].balls=ans.mas[i].balls;
            }
                for (int i=0;i<6;i++)
                cout<<"Pezyltuiu4ui masuv"<<endl;
        {
            cout<<"Putannia N"<<i+1<<endl;
            cout<<"putannia:"<<TestContent::mas[i].vopros<<endl<<"a="<<TestContent::mas[i].a<<endl<<"b="<<TestContent::mas[i].b<<endl<<"c="<<TestContent::mas[i].c<<endl<<"d="<<TestContent::mas[i].d<<endl<<"e="<<TestContent::mas[i].e<<endl<<"balls="<<TestContent::mas[i].balls<<endl;
        }
        }*/
//string TestContent::Task::operator +(Task& ans)
//      {
//          char res[/*strlen(TestContent::mas[i].vopros)+strlen(ans.TestContent::mas[i].vopros)+1*/100]; //c99
//          strcpy(res, vopros);
//          strcat(res, ans.vopros);
//              return res;
//
//      }
 
void TestContent::Init()
{
    int a,b;
    cout<<"bajaete zapovnutu testu avtomatu4no?"<<endl<<"1-tak"<<endl<<"else-ni"<<endl;
    cin>>a;
    if (a==1) ReadFile();
 
    else 
        {
            for(int i=0;i<3;i++) Read(i);
            TestContent::compare();
        };
    cout<<"bajaete proitu danui test?"<<endl<<"1-tak"<<endl<<"else-ni"<<endl;
    cin>>b;
    if (b==1)
    {
        system("cls");
        TestContent::testing();
    }
    else cout<<"press enter to continious";
 
}
 
void TestContent::ReadFile()
{
    ifstream File1(File);
        for(int i=0;i<3;i++)
        {
            //File1>>TestContent.mas[i].vopros>>obj.mas[i].a>>obj.mas[i].b>>obj.mas[i].c>>obj.mas[i].d>>obj.mas[i].e>>obj.mas[i].tru>>obj.mas[i].balls;
            //cout<<obj.mas[i].vopros<<obj.mas[i].a<<obj.mas[i].b<<obj.mas[i].c<<obj.mas[i].d<<obj.mas[i].e<<obj.mas[i].tru<<obj.mas[i].balls;
            File1>>TestContent::mas[i].vopros>>TestContent::mas[i].a>>TestContent::mas[i].b>>TestContent::mas[i].c>>TestContent::mas[i].d>>TestContent::mas[i].e>>TestContent::mas[i].tru>>TestContent::mas[i].balls;
            //cout<<"v:"<<TestContent::mas[i].vopros<<"\ta="<<TestContent::mas[i].a<<"\tb="<<TestContent::mas[i].b<<"\tc="<<TestContent::mas[i].c<<"\td="<<TestContent::mas[i].d<<"\te="<<TestContent::mas[i].e<<"\ttru="<<TestContent::mas[i].tru<<"\tballs="<<TestContent::mas[i].balls<<endl;
        }
}
 
void TestContent::Read(int _i)
{
int i=_i;
 
            cout<<"bilet N"<<i+1<<endl;
            cout<<"vvedit putannia: "; cin>>TestContent::mas[i].vopros;
            cout<<"vvedit variantu vidpovidi:"<<endl;
            cout<<"a: ";cin>>TestContent::mas[i].a;
            cout<<"b: ";cin>>TestContent::mas[i].b;
            cout<<"c: ";cin>>TestContent::mas[i].c;
            cout<<"d: ";cin>>TestContent::mas[i].d;
            cout<<"e: ";cin>>TestContent::mas[i].e;
            cout<<"vvedit nomer pravulnoi vidpovidi: "; cin>>TestContent::mas[i].tru;
            cout<<"vvedit kilkist baliv za virny vidpovid:"; cin>>TestContent::mas[i].balls;
            cout<<endl;
        
}
void TestContent::compare()
{
for(int j=2;j>0;j--)
            {
                    int i;
 
                if (TestContent::mas[j]==TestContent::mas[j-1]) //використовуэться перегрузка оператора ==
                {
                    cout<<"zaputann'a N"<<j<<" ta N"<<j+1<<" odnakovi. Bajaete zminutu 9kuicb bilet ?(1-tak,else-ni)"<<endl; 
                    cin>>x;
                    if (x==1)
                    {
                        cout<<"vvedit nomer bileta 9kui xo4ete 3minuyu:";
                        cin>>i;
                        i--;
                        TestContent::Read(i);
                    }
                }
            }
}
 
void TestContent::testing()
{
    int y;
    res=0;
        for (int i=0;i<3;i++)
        {
            cout<<"Putannia N"<<i+1<<endl;
            cout<<"putannia:"<<TestContent::mas[i].vopros<<endl<<"a="<<TestContent::mas[i].a<<endl<<"b="<<TestContent::mas[i].b<<endl<<"c="<<TestContent::mas[i].c<<endl<<"d="<<TestContent::mas[i].d<<endl<<"e="<<TestContent::mas[i].e<<endl<<"balls="<<TestContent::mas[i].balls<<endl;
            cin>>y;
            if (y==TestContent::mas[i].tru)
            {
                cout<<"virno!"<<endl;
                res=res+TestContent::mas[i].balls;
            }
            else cout<<"nevirno!"<<endl;
        }
    cout<<"resultat testy: "<<res<<endl;
}
 
void TestContent::Show()
{
    for (int i=0;i<3;i++)
        {
            cout<<"Putannia N"<<i+1<<endl;
            cout<<"putannia:"<<TestContent::mas[i].vopros<<endl<<"a="<<TestContent::mas[i].a<<endl<<"b="<<TestContent::mas[i].b<<endl<<"c="<<TestContent::mas[i].c<<endl<<"d="<<TestContent::mas[i].d<<endl<<"e="<<TestContent::mas[i].e<<endl<<"balls="<<TestContent::mas[i].balls<<endl;
        }
}
int main()
{
//  TestContent *obj_1 = new TestContent("2.txt");
    //створення обєкту класу, який автоматично заповнить тест з файлу 2.тхт
    TestContent obj_1("2.txt");
    obj_1.ReadFile();
    obj_1.Show();
    cout<<"press enter to continious";
    getch();
    system("cls");
 
//створення обєкту класу, з яким користувач буде працювати
    TestContent obj("1.txt");
l1: cout<<"1-Proxodjennia testy"<<endl<<"else-Pedaryvannia testy"<<endl;
    cin>>obj.x;
    if (obj.x==1)
    {
            obj.ReadFile();
            obj.testing();
    }
    else 
    {
            obj.Init();
    }
cout<<"summa dvoh testovuh naboriv"<<endl;
obj+obj_1;
getch();
system("cls");
goto l1;
return 0;
}
Помгите плиз перегрузить оепратор + для обьектов класса TestContent. В классе есть структура Task и создан ее массив из 3 структур таких.
создано 2 обьекта класса. перегрузкой нужно сделать obj_1+obj, чтоб при этом результатом был массив структур [6] который будет в себе содержать массив структуры первого обьекта и второго.

Пробовал делат но постоянно мешает ошибка :

1>c:\documents and settings\admin.skerskij\мои документы\visual studio 2010\projects\laba2 programming\laba2 programming\1.cpp(60): error C2106: =: левый операнд должен быть левосторонним значением


пробовал вот так делать
C++
1
2
3
4
5
6
7
8
9
TestContent operator+(TestContent left, TestContent right) {
 TestContent Res("0");
    for(int i=0;i<3;i++)
            {
                Res.new_mas[1].vopros=left.mas[i].vopros;
            }
 
 
}
и так

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
void TestContent::operator +(const TestContent& ans) const
        {
            for(int i=0;i<3;i++)
            {
            TestContent::new_mas[i].vopros=TestContent::mas[i].vopros;
            TestContent::new_mas[i].a=TestContent::mas[i].a;
            TestContent::new_mas[i].b=TestContent::mas[i].b;
            TestContent::new_mas[i].c=TestContent::mas[i].c;
            TestContent::new_mas[i].d=TestContent::mas[i].d;
            TestContent::new_mas[i].e=TestContent::mas[i].e;
            TestContent::new_mas[i].tru=TestContent::mas[i].tru;
            TestContent::new_mas[i].balls=TestContent::mas[i].balls;
            }
            for(int i=3;i<6;i++)
            {
            TestContent::new_mas[i].vopros=ans.mas[i].vopros;
            TestContent::new_mas[i].a=ans.mas[i].a;
            TestContent::new_mas[i].b=ans.mas[i].b;
            TestContent::new_mas[i].c=ans.mas[i].c;
            TestContent::new_mas[i].d=ans.mas[i].d;
            TestContent::new_mas[i].e=ans.mas[i].e;
            TestContent::new_mas[i].tru=ans.mas[i].tru;
            TestContent::new_mas[i].balls=ans.mas[i].balls;
            }
                for (int i=0;i<6;i++)
                cout<<"Pezyltuiu4ui masuv"<<endl;
        {
            cout<<"Putannia N"<<i+1<<endl;
            cout<<"putannia:"<<TestContent::mas[i].vopros<<endl<<"a="<<TestContent::mas[i].a<<endl<<"b="<<TestContent::mas[i].b<<endl<<"c="<<TestContent::mas[i].c<<endl<<"d="<<TestContent::mas[i].d<<endl<<"e="<<TestContent::mas[i].e<<endl<<"balls="<<TestContent::mas[i].balls<<endl;
        }
пожалуйста помогите сделать это.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.10.2011, 16:54     Перегрузка оператора +
Посмотрите здесь:

Перегрузка оператора C++
C++ Перегрузка оператора +
Перегрузка оператора - C++
C++ Перегрузка оператора +
Перегрузка оператора << C++
Перегрузка оператора C++
Перегрузка оператора C++
C++ Перегрузка оператора ()

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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