0 / 0 / 0
Регистрация: 30.09.2019
Сообщений: 104
1

Перегрузка операторов сложения, вычитания и умножения двух векторов

21.10.2019, 13:07. Показов 6592. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помогите пожалуйста. Мне надо сделать перегрузку сложения двух векторов, вычитания дух векторов, умножение двух векторов. И перегрузку вывода. Не совсем понимаю как это сделать. Заранее благодарю)
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
#include "pch.h"
#include <iostream>
#include <vector>
 
using namespace std;
 
vector <int> operator + (vector <int> v1, vector <int> v2) {
    return (v1.size() + v2.size())
}
 
int main()
{
    setlocale(0, "RUS");
    vector<int> VV1 = { 1,2,3,5 };
    vector<int> VV2 = { 6,7,8,9 };
    vector<int> VV3 = { 0,0,0,0 };
    for (int i = 0; i < 4; i++) {
        VV3[i] = VV1[i] + VV2[i];
        cout << VV3[i] << "  ";
    } cout << endl;
    for (int i = 0; i < 4; i++) {
        VV3[i] = VV1[i] - VV2[i];
        cout << VV3[i] << "  ";
    } cout << endl;
    for (int i = 0; i < 4; i++) {
        VV3[i] = VV1[i] * VV2[i];
        cout << VV3[i] << "  ";
    } cout << endl;
    return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.10.2019, 13:07
Ответы с готовыми решениями:

Перегрузка операций сложения/умножения вычитания 16-ричных чисел
Выполнить перезагрузку перечисленных операций, закрепив за ними соответствующий функциональный...

Перегрузка операторов сложения и умножения
По условию задачи мне необходимо получить сумму и произведение двух матриц с помощью перегрузки...

Функции сложения, вычитания, умножения и деления двух чисел
Не могу найти ошибок,программа не правильно работает. Вот условие : Напишите программу, которая...

Отладить функцию для сложения, вычитания, умножения и деления двух чисел
Не могу найти ошибок,программа не правильно работает. Вот условие : Напишите программу, которая...

10
фрилансер
5497 / 5093 / 1047
Регистрация: 11.10.2019
Сообщений: 13,337
21.10.2019, 13:23 2
Лучший ответ Сообщение было отмечено L_Legioner как решение

Решение

L_Legioner, что понимается под сложением векторов ? Умножением, вычитанием тоже

Добавлено через 13 минут
например, так

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
#include <iostream>
#include <vector>
 
std::vector<int> operator + (const std::vector<int>& v1, const std::vector<int>& v2)
{
    auto result=v1;
    
    const size_t len_max=std::max<size_t>(v1.size(),v2.size());
    result.resize(len_max,0);
    
    for(size_t i=0; i<result.size() && i<v2.size(); i++)
    {
        result[i]+=v2[i];
    }
    
    return result;
}
 
int main()
{
    std::vector<int> v1 = { 3,1,2,3,5 };
    std::vector<int> v2 = { 6,7,8,9 };
    
    auto v3=v1+v2;
    
    for(const auto& val:v3)
    {
        std::cout<<val<<",";
    }
}
0
0 / 0 / 0
Регистрация: 30.09.2019
Сообщений: 104
21.10.2019, 17:18  [ТС] 3
Алексей1153, ну перемножить (сложить, вычесть) элементы одного вектора с другим и сделать перегрузку этих операций. И перегрузку вывода.

Добавлено через 2 часа 29 минут
Алексей1153, Подчёркивает 8 строку. А точнее max и <size_t>. Как её объявить?

C++
1
const size_t len_max=std::max<size_t>(v1.size(),v2.size());
0
фрилансер
5497 / 5093 / 1047
Регистрация: 11.10.2019
Сообщений: 13,337
21.10.2019, 18:43 4
L_Legioner, пишешь в гугле:

size_t reference , по первой же ссылке находится нужный заголовочник

затем пишешь std::max reference - тоже находится

попробуй
1
0 / 0 / 0
Регистрация: 30.09.2019
Сообщений: 104
22.10.2019, 17:14  [ТС] 5
Алексей1153, Благодарю, а перегрузку вывода как можно реализовать?
0
фрилансер
5497 / 5093 / 1047
Регистрация: 11.10.2019
Сообщений: 13,337
22.10.2019, 17:54 6
L_Legioner, вот тут есть пример https://ravesli.com/urok-133-p... -i-vyvoda/
1
0 / 0 / 0
Регистрация: 30.09.2019
Сообщений: 104
23.10.2019, 15:13  [ТС] 7
Алексей1153, не подскажите как вывести перегрузку вывода в main??? В maine cout (61 строка). Ума не приложу что туда записать. Много чего перепробовал.

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
#include "pch.h"
#include <iostream>
#include <vector>
#include <cstring>
#include <algorithm>
# include <iomanip>
# include <map>
 
using namespace std;
 
ostream& operator << (ostream& os, map<int,vector <int>> vect) 
{             
 
    for (const auto& item : vect) {
        os << item.first;
        for (const auto& x : item.second) {
            os << x;
        }
    }
    
    return os;
}
vector<int> operator + (const vector<int>& v1, const vector<int>& v2)
{
    auto result = v1;
    const size_t len_max = max <size_t>(v1.size(), v2.size());
    result.resize(len_max, 0);
    for (size_t i = 0; i < result.size() && i < v2.size(); i++) {   
        result[i] += v2[i];
    }
    return result;
}
vector<int> operator - (const vector<int>& v1, const vector<int>& v2)
{
    auto result = v1;
    const size_t len_max = max <size_t>(v1.size(), v2.size());
    result.resize(len_max, 0);
    for (size_t i = 0; i < result.size() && i < v2.size(); i++) {
        result[i] -= v2[i];
    }
    return result;
}
vector<int> operator * (const vector<int>& v1, const vector<int>& v2)
{
    auto result = v1;
    const size_t len_max = max <size_t>(v1.size(), v2.size());
    result.resize(len_max, 0);
    for (size_t i = 0; i < result.size() && i < v2.size(); i++) {
        result[i] *= v2[i];
    }
    return result;
}
 
 
 
int main()
{
    vector<int> v1 = { 1,2,3,5 };
    vector<int> v2 = { 6,7,8,9 };
    map<int, vector<int>> MP;
    cout << 
    return 0;
}
0
фрилансер
5497 / 5093 / 1047
Регистрация: 11.10.2019
Сообщений: 13,337
23.10.2019, 15:23 8
L_Legioner, как-то так

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
std::ostream& operator<< (std::ostream &out, const vector<int>& v)
{
    out << .... тут выводим
 
    return out;
}
 
std::ostream& operator<< (std::ostream &out, const map<int, vector<int>>& m)
{
    out << .... тут выводим выводим выводим
 
    return out;
}
1
0 / 0 / 0
Регистрация: 30.09.2019
Сообщений: 104
28.10.2019, 11:50  [ТС] 9
Алексей1153, здравствуйте, а можете объяснить что происходит в этих строчках кода?

C++
1
2
const size_t len_max = max <size_t>(v1.size(), v2.size());
    result.resize(len_max, 0);
0
фрилансер
5497 / 5093 / 1047
Регистрация: 11.10.2019
Сообщений: 13,337
28.10.2019, 11:55 10
Лучший ответ Сообщение было отмечено L_Legioner как решение

Решение

L_Legioner, привет )

1 - берутся два значения v1.size() и v2.size(), приводятся к типу size_t. Из них выбирается наибольшее значение и присваивается переменной len_max
2 - размер вектора result устанавливается в len_max элементов, новые добавленные элементы (если такие оказались) инициализируются значением 0
1
0 / 0 / 0
Регистрация: 30.09.2019
Сообщений: 104
28.10.2019, 12:50  [ТС] 11
Алексей1153, спасибо)
0
28.10.2019, 12:50
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.10.2019, 12:50
Помогаю со студенческими работами здесь

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

Реализовать класс векторов, переопределив операции сложения, вычитания, умножения
Реализовать класс векторов, переопределив операции сложения, вычитания, умножения векторов и...

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

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


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru