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

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

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

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

30.10.2011, 16:54. Просмотров 395. Ответов 0
Метки нет (Все метки)

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;
        }
пожалуйста помогите сделать это.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.10.2011, 16:54
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Перегрузка оператора + (C++):

Перегрузка оператора - C++
Подскажите пожалуйста, способ перегрузки операторов &gt;= и &lt;= в следующей строке if ( ob.str &gt;= '0' &amp;&amp; ob.str &lt;= '9' )Мой вариант не...

Перегрузка оператора new[] - C++
Привет всем, программирую давольно давно, на с++ второй год. Столкнулся с задачей, в которой нужно создать свой класс и корректно в нем...

Перегрузка оператора != - C++
Помогите разобраться с перегрузкой оператора != есть класс, в котором, в разделе private объявлен указатель на массив std::string *str; ...

Перегрузка оператора [][] - C++
добрый день. имею в классе двумерный массив. подскажите как правильно сделать перегрузку к классу, чтоб при ЭкземлплярКлассa...

Перегрузка оператора + - C++
Есть 2 объекта класса Constr - R1 и R2. В каждом объекте есть string A. Нужно добавить значения первой строки ко второй. Как это сделать?

Перегрузка оператора + - C++
String String::operator + (String &amp; sg2) { String tmp; tmp.str = new char ; strcpy (tmp.str, str); strcat (tmp.str, sg2.str);...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.10.2011, 16:54
Привет! Вот еще темы с ответами:

Перегрузка оператора - C++
Доброго времени суток. Столкнулся с проблемой перегрузки оператора &quot;++&quot; выдает ошибку в первой строке: postfix ‘const Counter...

Перегрузка оператора - - C++
В своём классе я перегрузил оператор -,но в функции,использующей вычитание возникает ошибка error C2678: бинарный &quot;-&quot;: не найден...

Перегрузка оператора ~ - C++
Доброго времени суток! Помогите пожалуйста с решением задачи. Описать класс множество целых чисел. Перегрузить следующую операцию: ~...

Перегрузка оператора - C++
Здравствуйте.Появился вопрос: есть две переменные float **m,**m1 как перегрузить оператор = в данном случае?(имею ввиду только первую...


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

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

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