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

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

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

ООП перегрузка операторов сумма элементов - C++

05.12.2013, 02:13. Просмотров 495. Ответов 6
Метки нет (Все метки)

есть задача, нужно изменить перегрузку операции "+". что бы возвращало значение суммы двух входящих Векторов (массивов).

HELP

C++ (Qt)
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
#include <iostream>
#include <windows.h>
using namespace std;
const int vector_size = 8; // размер вектора
 
class vector { // базовый класс
   private:
      int *a, *b; // указатель на голову вектора
      int size; // размер вектора
   public:
      vector (void); // конструктор
      ~vector (void); // деструктор
      vector & operator ++ (int); // прототип переопределения оператора ++
      friend vector & operator -- (vector &); // прототип переопределения оператора –
      vector & operator + (vector const &); // прототип переопределения оператора +
      friend bool operator > (vector const &, vector const &); // прототип переопределения >
      friend ostream & operator << (ostream &, const vector &); // прототип переопределения потока вывода
      friend istream & operator >> (istream &, const vector &); // прототип переопределения потока ввода
} A, B, C;
 
ostream & operator << (ostream & out, const vector & temp) { // вывода в поток
   for (int i = 0; i < temp.size; i++)
      out << temp.a[i] << ((i + 1 < temp.size ? " " : ""));
   return out;
}
 
istream & operator >> (istream & in, const vector & temp) { // вввода в поток
   for (int i = 0; i < temp.size; i++)
      in >> temp.a[i];
   return in; // возвращаем указатель на поток
}
 
vector & vector::operator ++ (int) { // переопределение оператора ++
   for (int i = 0; i < size; i++)
      a[i] *= a[i];
   return *this; // возвращаем указатель на текущий объект
}
 
vector & operator -- (vector & temp) { // переопределение оператора --
   for (int i = 0; i < temp.size-1; i++)
      temp.a[i] -= temp.a[i+1];
   return temp; // возвращаем указатель на текущий объект
}
 
vector & vector::operator + (vector const & temp) { // переопределение оператора сложения +
   for (int i = 0; i < this -> size; i++)
    this->a[i] = temp.a[i]+temp.b[i];
   return *this; // возвращаем указатель на первый объект
}
 
bool operator > (vector const & temp_1, vector const & temp_2) { // переопределение оператора сравнения
   int max1=temp_1.a[0];
   int max2=temp_1.a[0];
 
   for (int i = 0; i < temp_1.size; i++)
        if (max1<temp_1.a[i]) {max1=temp_1.a[i];};
 
   for (int i = 0; i < temp_1.size; i++)
        if (max2<temp_2.a[i]) {max2=temp_2.a[i];};
 
   if (max2<max1)   return true;
    else    return false;
}
 
vector::vector (void):size (vector_size) { // конструктор
   a = new int [size]; // выделение памяти для динамического массива типа int
   for (int i = 0; i < size; a[i++] = 0); // инициализация его нулями
}
 
vector::~vector (void) { // деструктор
   delete [] a;
}
 
 
int main () {
   while (true) {
      system ("cls");
      cout << "Select an action:" << endl;
      cout << " 1. >> Fill vector A." << endl;
      cout << " 2. >> Fill vector B." << endl;
      cout << " 3. << Print vector to display." << endl;
      cout << " 4. ++ Enlarge the vector A twice." << endl;
      cout << " 5. ++ Enlarge the vector B twice." << endl;
      cout << " 6. -- Reduce the vector elements A by six." << endl;
      cout << " 7. -- Reduce the vector elements B by six." << endl;
      cout << " 8. + Summa the two vectors in the vector C." << endl;
      cout << " 9. > The vector A element greater than any element of the vector B." << endl;
      cout << " 0. Exit." << endl;
      switch (cin.get ()) {
         case '1': system ("cls");
            cout << "Enter " << vector_size << " elements of vector A: " << flush;
            cin >> A;
            system ("pause");
         break;
         case '2': system ("cls");
            cout << "Enter " << vector_size << " elements of vector B: " << flush;
            cin >> B;
            system ("pause");
         break;
         case '3': system ("cls");
            cout << "Vector A: " << A << endl;
            cout << "Vector B: " << B << endl;
            system ("pause");
         break;
         case '4': system ("cls");
            cout << "Before: " << A << endl;
            A++;
            cout << "After: " << A << endl;
            system ("pause");
         break;
         case '5': system ("cls");
            cout << "Before: " << B << endl;
            B++;
            cout << "After: " << B << endl;
            system ("pause");
         break;
         case '6': system ("cls");
            cout << "Before: " << A << endl;
            --A;
            cout << "After: " << A << endl;
            system ("pause");
         break;
         case '7': system ("cls");
            cout << "Before: " << B << endl;
            --B;
            cout << "After: " << B << endl;
            system ("pause");
         break;
         case '8': system ("cls");
            cout << "Array A: " << A << endl;
            cout << "Array B: " << B << endl;
            C= A + B;
            cout << "Array C after fold: " << C << endl;
         system ("pause");
         break;
         case '9': system ("cls");
            cout << "What bolshe, A or B ?" << endl;
            cout << "Answer: ";
            if (A > B) cout<< "First"; else cout<<"Two" << endl;
            system ("pause");
         break;
         case '0': return 0;
      }
   }
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.12.2013, 02:13     ООП перегрузка операторов сумма элементов
Посмотрите здесь:

ООП перегрузка операторов сумма элементов - C++
#include &lt;iostream&gt; #include &lt;windows.h&gt; using namespace std; const int vector_size = 8; // размер вектора class vector { //...

ООП перегрузка операторов - C++
#include &lt;iostream&gt; #include &lt;windows.h&gt; using namespace std; const int vector_size = 8; // размер вектора class vector { //...

Перегрузка операторов << и >>, загрузка элементов в структуру из последовательного потока - C++
Добрый день. Для своего класса нужно загрузить элементы в структуру данных из последовательного потока. Написал перегрузку операторов: ...

Перегрузка операторов - C++
Привет, не подскажите, почему у меня тут не работает правильно += оператор. #include &lt;iostream&gt; #include &lt;conio.h&gt; #include...

Перегрузка операторов - C++
Всем привет. Мне нужно ввести класс для работы с объектом &quot;рациональная дробь&quot; вида (m / n) (рациональная дробь это дробь у которого...

Перегрузка операторов +=, -=, *= и /= - C++
Есть перегруженные функции + - * / На MSDN есть такая фраза: &quot;Оператор += нельзя перегрузить непосредственно, однако пользовательские...

Перегрузка операторов - C++
Здравствуйте все. Начали проходить ООП, но хотелось бы узнать больше, подскажите пожалуйста кто знает хорошие книги с грамотным описанием...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kuzia domovenok
1890 / 1745 / 118
Регистрация: 25.03.2012
Сообщений: 5,924
Записей в блоге: 1
05.12.2013, 03:01     ООП перегрузка операторов сумма элементов #2
Сразу вопрос: почему вектор содержит два "указателя на голову"?

Я догадываюсь почему. Поэтому сразу задам вопрос: а если надо будет сложить сто векторов, сколько указателей ты добавишь в поля класса?
И тут мы приходим к тому, что ты не знаешь основ и не представляешь себе классы как пользовательские типы данных!
vitaliypro
1 / 1 / 0
Регистрация: 09.09.2013
Сообщений: 125
05.12.2013, 03:07  [ТС]     ООП перегрузка операторов сумма элементов #3
я не могу понять перегрузку...
в одним случаях я разобрался, а в этом не могу!
Я и не отрицаю того, что я ЭТОГО НЕ ЗНАЮ! иначе я бы не спрашивал.

Можешь помочь?
Kuzia domovenok
1890 / 1745 / 118
Регистрация: 25.03.2012
Сообщений: 5,924
Записей в блоге: 1
05.12.2013, 03:13     ООП перегрузка операторов сумма элементов #4
vitaliypro, а почему вы не отвечаете на мой ответ?
vitaliypro
1 / 1 / 0
Регистрация: 09.09.2013
Сообщений: 125
05.12.2013, 03:20  [ТС]     ООП перегрузка операторов сумма элементов #5
почему два?
я не знаю.


C++ (Qt)
1
2
3
4
5
int operator + (vector const & temp_1, vector const & temp_2) { // переопределение оператора сложения +
   for (int i = 0; i <vector_size; i++)
    /*temp.a[i]*/= temp_1.a[i]+temp_2.a[i];
   return /*what is return ??? */; // возвращаем указатель на первый объект
}
как то так, скорее всего, только что вместо комментов(((
Kuzia domovenok
1890 / 1745 / 118
Регистрация: 25.03.2012
Сообщений: 5,924
Записей в блоге: 1
05.12.2013, 03:51     ООП перегрузка операторов сумма элементов #6
А вместо комментов вектор С
А в конце return C

Добавлено через 2 минуты
И не int operator, а vector operator
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.12.2013, 04:14     ООП перегрузка операторов сумма элементов
Еще ссылки по теме:

Перегрузка операторов - C++
При перегрузке операторов арифметических действий советуют += (и подобные) делать членами класса, а операторы + (и подобные) делать не...

Перегрузка операторов - C++
Доброго времени суток! Столкнулся с такой проблемой, перегрузка операторов. Имею работающий код, но не смог сделать по своему заданию. ...

Перегрузка операторов - C++
Помогите проверить и сделать надо 1) Базовый класс Строка Описать базовый класс СТРОКА. Обязательные члены класса: * указатель...

Перегрузка операторов - C++
Помогите с задачей на перегрузку операторов. (ппц мозговынос). 1)Создать class Mouse со свойством int power. #include...

Перегрузка операторов - C++
В общем учу эту тему и ввожу код один в один как в уроке, но в уроке он компилится, а у меня нет. Ругается на &quot;c1++;&quot;, подскажите...


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

Или воспользуйтесь поиском по форуму:
vitaliypro
1 / 1 / 0
Регистрация: 09.09.2013
Сообщений: 125
05.12.2013, 04:14  [ТС]     ООП перегрузка операторов сумма элементов #7
C++ (Qt)
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
#include <iostream>
#include <windows.h>
using namespace std;
const int vector_size = 8; // размер вектора
 
class vector { // базовый класс
   private:
      int *a, *b; // указатель на голову вектора
      int size; // размер вектора
   public:
      vector (void); // конструктор
      ~vector (void); // деструктор
      vector & operator ++ (int); // прототип переопределения оператора ++
      friend vector & operator -- (vector &); // прототип переопределения оператора –
      vector operator + (vector const &, vector const &); // прототип переопределения оператора +
      friend bool operator > (vector const &, vector const &); // прототип переопределения >
      friend ostream & operator << (ostream &, const vector &); // прототип переопределения потока вывода
      friend istream & operator >> (istream &, const vector &); // прототип переопределения потока ввода
} A, B, C;
 
ostream & operator << (ostream & out, const vector & temp) { // вывода в поток
   for (int i = 0; i < temp.size; i++)
      out << temp.a[i] << ((i + 1 < temp.size ? " " : ""));
   return out;
}
 
istream & operator >> (istream & in, const vector & temp) { // вввода в поток
   for (int i = 0; i < temp.size; i++)
      in >> temp.a[i];
   return in; // возвращаем указатель на поток
}
 
vector & vector::operator ++ (int) { // переопределение оператора ++
   for (int i = 0; i < size; i++)
      a[i] *= a[i];
   return *this; // возвращаем указатель на текущий объект
}
 
vector & operator -- (vector & temp) { // переопределение оператора --
   for (int i = 0; i < temp.size-1; i++)
      temp.a[i] -= temp.a[i+1];
   return temp; // возвращаем указатель на текущий объект
}
 
vector operator + (vector const & temp_1, vector const & temp_2) { // переопределение оператора сложения +
   for (int i = 0; i <vector_size; i++)
    vector c= temp_1.a[i]+temp_2.a[i];
   return c; // возвращаем указатель на первый объект
}
 
bool operator > (vector const & temp_1, vector const & temp_2) { // переопределение оператора сравнения
   int max1=temp_1.a[0];
   int max2=temp_1.a[0];
 
   for (int i = 0; i < temp_1.size; i++)
        if (max1<temp_1.a[i]) {max1=temp_1.a[i];};
 
   for (int i = 0; i < temp_1.size; i++)
        if (max2<temp_2.a[i]) {max2=temp_2.a[i];};
 
   if (max2<max1)   return true;
    else    return false;
}
 
vector::vector (void):size (vector_size) { // конструктор
   a = new int [size]; // выделение памяти для динамического массива типа int
   for (int i = 0; i < size; a[i++] = 0); // инициализация его нулями
}
 
vector::~vector (void) { // деструктор
   delete [] a;
}
 
 
int main () {
   while (true) {
      system ("cls");
      cout << "Select an action:" << endl;
      cout << " 1. >> Fill vector A." << endl;
      cout << " 2. >> Fill vector B." << endl;
      cout << " 3. << Print vector to display." << endl;
      cout << " 4. ++ Enlarge the vector A twice." << endl;
      cout << " 5. ++ Enlarge the vector B twice." << endl;
      cout << " 6. -- Reduce the vector elements A by six." << endl;
      cout << " 7. -- Reduce the vector elements B by six." << endl;
      cout << " 8. + Summa the two vectors in the vector C." << endl;
      cout << " 9. > The vector A element greater than any element of the vector B." << endl;
      cout << " 0. Exit." << endl;
      switch (cin.get ()) {
         case '1': system ("cls");
            cout << "Enter " << vector_size << " elements of vector A: " << flush;
            cin >> A;
            system ("pause");
         break;
         case '2': system ("cls");
            cout << "Enter " << vector_size << " elements of vector B: " << flush;
            cin >> B;
            system ("pause");
         break;
         case '3': system ("cls");
            cout << "Vector A: " << A << endl;
            cout << "Vector B: " << B << endl;
            system ("pause");
         break;
         case '4': system ("cls");
            cout << "Before: " << A << endl;
            A++;
            cout << "After: " << A << endl;
            system ("pause");
         break;
         case '5': system ("cls");
            cout << "Before: " << B << endl;
            B++;
            cout << "After: " << B << endl;
            system ("pause");
         break;
         case '6': system ("cls");
            cout << "Before: " << A << endl;
            --A;
            cout << "After: " << A << endl;
            system ("pause");
         break;
         case '7': system ("cls");
            cout << "Before: " << B << endl;
            --B;
            cout << "After: " << B << endl;
            system ("pause");
         break;
         case '8': system ("cls");
            cout << "Array A: " << A << endl;
            cout << "Array B: " << B << endl;
            C= A + B;
            cout << "Array C after fold: " << C << endl;
         system ("pause");
         break;
         case '9': system ("cls");
            cout << "What bolshe, A or B ?" << endl;
            cout << "Answer: ";
            if (A > B) cout<< "First"; else cout<<"Two" << endl;
            system ("pause");
         break;
         case '0': return 0;
      }
   }
}
все равно ругается...((((9
Yandex
Объявления
05.12.2013, 04:14     ООП перегрузка операторов сумма элементов
Ответ Создать тему
Опции темы

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