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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Упорядочить массив из n символов методом пузырька в алфавитном порядке. http://www.cyberforum.ru/cpp-beginners/thread1028947.html
Упорядочить массив из n символов методом пузырька в алфавитном порядке.
C++ Даны две символьные строки А и В Даны две символьные строки А и В. Составьте программу, проверяющую, можно ли из букв, входящих в А, составить В. буквы можно переставлять и использовать 1 раз. По сути надо проверить, чтобы все символы строки В были в строке А http://www.cyberforum.ru/cpp-beginners/thread1028941.html
C++ работа с файлами
Помогите написать программу, которая считывает английский текст из файла и выводит на экран слова, начинающиеся с гласных букв.
[struct tm] или нестыковка в C89 & C++98 & C++11? C++
http://www.cplusplus.com/reference/ctime/tm/?kw=tm Здесь в С++11 в поле tm_sec количество секунд в минуте как и нужно: 61сек. Но во вкладке C++98 C90 количество секунд в минте: 62сек. Почему раньше было 62 сек? ( в Стандарте я не смотрел :))
C++ Пользовательские функции в С http://www.cyberforum.ru/cpp-beginners/thread1028934.html
как этот код переделать с использованием пользовательской функции?? #include <stdio.h> #include <conio.h> #include <locale> #include <string.h> #include <iostream> using namespace std; void main() {
C++ фракталы Написать 3 программы, который реализую 3 вида фракталов: 1)стохастический фрактал 2)алгебраический фрактал 3) геометрический фрактал подробнее

Показать сообщение отдельно
vitaliypro
1 / 1 / 0
Регистрация: 09.09.2013
Сообщений: 125

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

04.12.2013, 22:31. Просмотров 528. Ответов 5
Метки (Все метки)

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;
      }
   }
}

Нужно изменить перегрузку "+", у меня стоит на клавишу 8.
результат должен в третью переменную сохраняться.
помогите!!!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 18:01. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru