Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
0 / 0 / 0
Регистрация: 13.01.2015
Сообщений: 13

Перегрузить оператор сложения для вектора

08.06.2015, 23:31. Показов 1422. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет! не компилируется, понять не могу почему, ругается на оператор присваивания, не можжет сложить
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
#include <windows.h>
#include <iostream>
#include <stdio.h>
#include <math.h>
#include <ctime>
#include <vector>
using namespace std;
 
class Iterator
{
friend class Vectors;
public:
    Iterator() {Element=0;};
    Iterator(Iterator &Iter) {Element=Iter.Element;};
    bool operator==(Iterator &Iter){return Element==Iter.Element;};
    bool operator!=(Iterator &Iter){return Element!=Iter.Element;};
    void operator++(){++Element;};
    void operator--(){--Element;};
    int &operator *(){return *Element;};
protected:
    int *Element;
};
 
class Vectors
{
friend ostream& operator<< (ostream&out, Vectors &Vect);
friend istream& operator>> (istream&in, Vectors &Vect);
public:
    Vectors (int nNumOfElm, int nZnach=0)
    {
        Size=nNumOfElm;
        Data=new int[Size];
        for (int i=0; i<Size; i++)
            Data[i]=nZnach;
        Begin.Element=&Data[0];
        End.Element=&Data[Size];
    }
    Vectors (const Vectors &VCopy)
    {
        Size=VCopy.Size;
        Data=new int[Size];
        for (int i=0; i<Size; i++)
            Data[i]=VCopy.Data[i];
        Begin=VCopy.Begin;
        End=VCopy.End;
    }
    Vectors &operator= (Vectors &Vector)
    {
        if (this==&Vector) return *this;
        Size=Vector.Size;
        if (Data!=0) delete []Data;
        Data=new int[Size];
        for (int i=0;i<Size; i++)
        {
            Data[i]=Vector.Data[i];
        }
        Begin=Vector.Begin;
        End=Vector.End;
        return *this;
    }
    int &operator[] (int Index)
    {
        if (Index<Size) return Data[Index];
        else cout << "\nВведен не верных номер.\n";
    }
    Vectors operator+(int K)
    {
        Vectors TempVector(Size);
        for (int i=0; i<Size; i++)
            TempVector.Data[i]+=(Data[i]+K);
        return TempVector;
    }
    int operator()()
    {
        return Size;
    }
Iterator First(){return Begin;};
Iterator Last(){return End;};
protected:
    int Size;
    int *Data;
    Iterator Begin;
    Iterator End;
 };
 
ostream& operator<< (ostream&out, Vectors &Vect)
{
    for (int i=0; i<Vect.Size; i++)
    {
        out<< Vect.Data[i]<<"\t";
    };
    return out;
}
istream& operator>> (istream&in, Vectors &Vect)
{
    for (int i=0; i<Vect.Size; i++)
    {
        in>> Vect.Data[i];
    };
    return in;
}
 
 
 
int main()
{
            SetConsoleCP(1251);
            SetConsoleOutputCP(1251);
            cout << "---------------------------------------------------------------------\n";
            cout << "Создадим вектор из 5 элемнетов, заполненных нулями:\n";
            Vectors Vec1(5);
            cout << "Введите значения элементов:\n";
            cout << Vec1 << "\n";
            cout << "---------------------------------------------------------------------\n";
            cin >> Vec1;
            cout << "\n" << Vec1 << "\n";
            cout << "---------------------------------------------------------------------\n"
            << "Присвоим значению 3 - 99:";
            Vec1[2]=99;
            cout << "\n" << Vec1 << "\n";
            cout << "---------------------------------------------------------------------\n";
            cout << "Создадим вектор из 10 элемнетов, заполненных нулями:\n";
            Vectors Vec2(10);
            cout << "\n" << Vec2 << "\n";
            cout << "---------------------------------------------------------------------\n";
            cout << "Присвоим значения вектора 1, 2ому";
            Vec2=Vec1;
            cout << "\n" << Vec2 << "\n";
            cout << "---------------------------------------------------------------------\n";
            cout << "Создадим еще вектор из 10 элемнетов, заполненных нулями:\n";
            Vectors Vec3(10);
            cout << "\n" << Vec3 << "\n";
            cout << "---------------------------------------------------------------------\n";
            cout << " Добавим к каждому элементу 25: ";
            Vec3=Vec2+Vec1; - вот тут... честно не понимаю
            cout << "\n" << Vec2 << "\n";
            cout << "---------------------------------------------------------------------\n";
    return 0;
}
подскажите пожалуйста

Добавлено через 52 секунды
Там надо сделать так чтоб Vec3=Vec2+20 например, только не могу чего то сделать
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
08.06.2015, 23:31
Ответы с готовыми решениями:

Как перегрузить оператор вывода в поток для вектора?
Стало интересно реализовать подобный функционал, и конечно же ничего не работает. При этом коде: template&lt;class T&gt; ...

Для шаблонного класса перегрузить оператор присваивания, copy-конструктор, объекты cin и cout, оператор *
Помогите в следующем: Для класса шаблона следует перегрузить оператор присваивания, конструктор копирования, бинарный оператор суммы «*»,...

Перегрузить операцию сложения для класса дробей
Люди добрые, помогите инвалиду;) Нужно написать программу на Си, задача такова: Перегрузить операцию сложения для класса дробей и...

4
23 / 23 / 14
Регистрация: 01.05.2015
Сообщений: 180
09.06.2015, 05:12
Если заранее известно что векторы одинакового размера, то думаю сложение нужно проводить также в цикле типа
C++
1
2
3
4
 for (int i (0); i < Vec3.size(); i++)
            {
                Vec3[i] = Vec2[i] + Vec1[i];
            }
1
0 / 0 / 0
Регистрация: 13.01.2015
Сообщений: 13
09.06.2015, 05:31  [ТС]
Спасибо, решение тоже нашел сам, там не много по другому получилось чем хотел но получилось. Получилось по крайней мере вот так
C++
1
2
3
4
5
6
7
8
9
    void operator+(int K)
    {
 
        for (int i=0; i<Size; i++)
            {Data[i]+=K;};
 
    }
 
Vec3+25;
Тогда она складывает, сразу присвоить не получается) но зато все работает)

Добавлено через 1 минуту
Скажем так в этом и суть была перегрузки оператора сложения) чтоб складывать вектора а не их значения в их цикле)
0
Почетный модератор
Эксперт С++
 Аватар для SatanaXIII
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
09.06.2015, 09:10
Цитата Сообщение от Alexander273 Посмотреть сообщение
чтоб складывать вектора а не их значения
Как это понять? Что вы пытались сделать вообще?
0
управление сложностью
 Аватар для Почтальон
1693 / 1306 / 259
Регистрация: 22.03.2015
Сообщений: 7,545
Записей в блоге: 5
09.06.2015, 09:44
Может ТС имел ввиду вычисление размера ?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
09.06.2015, 09:44
Помогаю со студенческими работами здесь

Для класса, хранящего список чисел, перегрузить операторы сложения и вычитания
Для класса, хранящего список чисел, перегрузить операторы сложения и вычитания числа так, чтобы они добавляли и удаляли соответствующий...

Перегрузить для класса оператор ==
немогу написать продолжение кода... нужно написать : перегрузить для данного класса оператор ==, вычисляющий пробег автомобиля с...

Перегрузить оператор << для структуры List
В общем пытаюсь перегрузить оператор передачи в поток для структуры, но что-то видимо делаю не так. Вопрос : что? #include...

Перегрузить оператор ++ для одномерных массивов
Перегрузить оператор ++ для одномерных массивов;

Перегрузить оператор присваивания для класса
Помогите, пожалуйста. Требуется написать оператор присваивания для данного класса class ARRAY{ int size; double **m; public: ...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение/ Перевод https:/ / **********/ gallery/ thinkpad-x220-tablet-porn-gzoEAjs . . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru