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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Создается объект абстрактного класса:( http://www.cyberforum.ru/cpp-beginners/thread1031522.html
Вот допустим у меня есть класс: class Cell { public: Cell() {} ~Cell() {} virtual std::string getData() const = 0; }; Ну и от него наследовано пару классов, IntCell, StrCell и т. д.
C++ Работа со столбцами в vector< vector<int> > Добрый вечер. Есть ли какие-нибудь способы работы со столбцами в двумерных векторах? Часть задачи звучит так: "Переставить элементы первого столбца в обратном порядке, если в нем нет повторяющихся элементов." Задачу нужно решать используя алгоритмы stl и методы класса vector. Думаю вот скопировать элементы 1-ого столбца в отдельный вектор, и там уже с ними работать, а затем обратно. Можно ли... http://www.cyberforum.ru/cpp-beginners/thread1031519.html
C++ Динамически загружаемые библиотеки (DLL)
Здравствуйте. Может кто-нибудь сможет помочь? Нужно создать библиотеку функций для работы с двумерными матрицами и скомпоновать ее в виде DLL. Набор функций должен включать: транспонирование матриц, вычисление определителя квадратной матрицы, определение обратной матрицы, умножение двух матриц, сложение матриц, умножение матрицы на скаляр. Разработать программу, демонстрирующую использование...
C++ Нужна благотворительность
Занимаюсь созданием правдоподобной (с физической точки зрения) 3D модели солнечной системы. Необходимо обозначить спутники планет гигантов Юпитера, Урана и Нептуна. Нужно написать: int <название спутника на английском> = <порядковый номер> //начиная с 0, для возможности использования 0-индексации массива
C++ Два равных элемента http://www.cyberforum.ru/cpp-beginners/thread1031496.html
Два равных элемента.Дан целочисленный двумерный массив А размера nxm.Известно что среди его элементов два и только два равны между собой.Напеатать их индексы Ребят очень прошу помощи в программировании полный ноль,но надо сдать задачу. Если не трудно можно обьяснения к строчкам.
C++ Поменять строки местами Меня интересует такой вопрос, вот это неправильный отрывок кода. ... while (a!=NULL) { puts(a); a=strtok(NULL," "); if (strlen(a)==5) kolvo++; } ... подробнее

Показать сообщение отдельно
vitaliypro
1 / 1 / 0
Регистрация: 09.09.2013
Сообщений: 125
07.12.2013, 01:26  [ТС]     ООП перегрузка операторов сумма элементов
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
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
#include <iostream>
#include <windows.h>
 
using namespace std;
 
const int vector_size = 8; // размер вектора
 
class vector { // базовый класс
   private:
      int *a, *b, *c; // указатель на голову вектора
      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 &); // прототип переопределения потока ввода
};
 
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)
{
   vector Zet;
   for (int i = 0; i <temp.size; ++i)
   {
   Zet.a[i] = this->a[i] + temp.a[i];
   }
   return Zet;
}
 
 
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 () {
   vector A, B, C;
 
   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;
      }
   }
}
Работает, но выбивает в сумме первые два числа не те(((( а остальное норм)))
не могу понять что не так!
HELP PLEASE!
 
Текущее время: 06:53. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru