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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 40, средняя оценка - 4.80
PointsEqual
ниначмуроФ
834 / 518 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
#1

Сложение векторов - C++

07.04.2010, 22:40. Просмотров 5865. Ответов 22
Метки нет (Все метки)

Здрасти.

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 <conio.h>
#include <cmath>
 
class vector3D{
    public:
    vector3D(int inita=0, int initb=0, int initc=0): a(inita), b(initb), c(initc){};
    int add(vector3D &v1, vector3D &v2);
 
    private:
    int a;
    int b;
    int c;
 
};
 
int vector3D::add(vector3D &v1, vector3D &v2){
    return v1.a+v2.a+v1.b+v2.b+v1.c+v2.c;
}
 
 
int main()
{
    vector3D v1(1,2,3);
    vector3D v2(4,3,2);
 
    
 
    return 0;
}
как мне сложить вектора v1 и v2 ?? Функция add чтото не получается у меня

Добавлено через 23 минуты
вот так работает

C++
1
2
3
4
5
6
7
8
9
int main()
{
    vector3D v1(1,2,3);
    vector3D v2(4,3,5);
 
    std::cout<<v1.add(v1,v2);
 
    return 0;
}
но помоему это както не корректно
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.04.2010, 22:40     Сложение векторов
Посмотрите здесь:

Сложение векторов - C++
Не понимаю почему методом insert не хочет принимать такие параметры. Даже если пытают переменной типа int присвоить vec, выдает ошибку (int...

Сложение векторов в результирующий - C++
кто может решите пожалуйста одну задачку: Даны матрица порядка n, а также векторы X и Y с элемнтами каждый. Найти вектор C=A*(X+Y)

Сложение векторов в структуре - C++
Надо сложить 2 вектора использую функции структуры. Пока дошел до этого варианта: #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include...

Сложение векторов строк - C++
Имеются два вектора строк std::vector &lt;std::string&gt; *str1; std::vector &lt;std::string&gt; *str2; Как их сложить чтоб в итоге...

CUDA C/C++ сложение векторов - C++
вроде все так делаю, но не запускается не могу понять ошибку делаю с шаблона там просто надо заполнить недастоющие строчки вот шаблон ...

Последовательное и параллельное сложение векторов - C++
Помогите,пожалуйста, написать программу для последовательного и параллельного сложение векторов.

Реализовать сложение векторов посредством transform - C++
Товарищи, читаю Прату, дошел до STL (это ппц), есть задача реализовать вот этот кусок vad3 = 10.0* ((vad1 + vad2) / 2.0 + vad1 *...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Psixodelik
40 / 39 / 2
Регистрация: 27.11.2009
Сообщений: 100
07.04.2010, 22:48     Сложение векторов #2
А что не корректно? Мне вот только не нравится что у тебя получается одно число...вроде должен получится вектор, если я прав, то тебе надо изменить 18 строку...
PointsEqual
ниначмуроФ
834 / 518 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
07.04.2010, 22:52  [ТС]     Сложение векторов #3
18, да это точно.

все работает, но мне кажется некорректно так делать
C++
1
v1.add(v1,v2);
, или так и надо?

Добавлено через 38 секунд
v1 2 раза меня смущает просто
Psixodelik
40 / 39 / 2
Регистрация: 27.11.2009
Сообщений: 100
07.04.2010, 22:54     Сложение векторов #4
можешь сделать так:

C++
1
2
3
4
5
vector3D result;
vector3D v1(1,2,3);
vector3D v2(4,3,2);
    
std::cout << result.add(v1,v2)<< std::endl;
easybudda
Эксперт CЭксперт С++
9466 / 5479 / 927
Регистрация: 25.07.2009
Сообщений: 10,504
07.04.2010, 22:57     Сложение векторов #5
переменные a, b, c объявлены в разделе private
добавьте в объявление класса
friend int add(vector3D &v1, vector3D &v2);

соответственно из определения функции уберите vector3d::
иначе у Вас add() только как функция класса будет работать, что собственно и происходит.

а лучше оператор + перегрузить, и возвращать действительно нужно объект того же класса - так как-то правильнее...
insideone
Модератор
Автор FAQ
3638 / 916 / 49
Регистрация: 10.01.2010
Сообщений: 2,468
07.04.2010, 23:02     Сложение векторов #6
Лучше
C++
1
2
3
int vector3D::add(vector3D &v2){
    return a+v2.a+b+v2.b+c+v2.c;
}
C++
1
std::cout<< v1+v2;
Хотя вычисления мне не нравятся
PointsEqual
ниначмуроФ
834 / 518 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
07.04.2010, 23:12  [ТС]     Сложение векторов #7
easybudda, то что мне нужно, спасибо

Добавлено через 1 минуту
insideone, ненравятся потомучто выходит одно число? это я исправлю

Добавлено через 7 минут
Цитата Сообщение от easybudda Посмотреть сообщение
и возвращать действительно нужно объект того же класса - так как-то правильнее...
если возвратить объект тогоже класса тогда как функция add будет выглядить??
insideone
Модератор
Автор FAQ
3638 / 916 / 49
Регистрация: 10.01.2010
Сообщений: 2,468
07.04.2010, 23:14     Сложение векторов #8
Цитата Сообщение от PointsEqual Посмотреть сообщение
если возвратить объект тогоже класса тогда как функция add будет выглядить??
C++
1
2
3
vector3D vector3D::add(vector3D &v2){
    // какой то код
}
Возвращать именно по значению - важно

Не по теме:

Однако после этого не будет работать вывод через cout, но и из этого тоже есть выход

PointsEqual
ниначмуроФ
834 / 518 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
07.04.2010, 23:27  [ТС]     Сложение векторов #9
По вашим рекомендациям вот что сделал:

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
class vector3D{
    public:
    vector3D(int inita=0, int initb=0, int initc=0): a(inita), b(initb), c(initc){};
    vector3D operator+(vector3D v2);
    void show();
 
    private:
    int a;
    int b;
    int c;
 
};
 
vector3D vector3D::operator+(vector3D v2){
    vector3D vec;
    vec.a=v2.a+a;
    vec.b=v2.b+b;
    vec.c=v2.c+c;
    return vec;
}
 
void vector3D::show(){
    std::cout<<a<<","<<b<<","<<c;
}
 
int main()
{
    vector3D v1(1,2,3);
    vector3D v2(4,3,5);
 
    (v1+v2).show();
 
    return 0;
}
лучше стало мне кажется) и корректнее!
insideone
Модератор
Автор FAQ
3638 / 916 / 49
Регистрация: 10.01.2010
Сообщений: 2,468
07.04.2010, 23:37     Сложение векторов #10
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
#include <iostream>
 
class vector3D{
    friend std::ostream& operator <<(std::ostream& out, vector3D& v);
    public:
    vector3D(int inita=0, int initb=0, int initc=0): a(inita), b(initb), c(initc){};
    vector3D operator+(vector3D v2);
 
    private:
    int a;
    int b;
    int c;
 
};
 
vector3D vector3D::operator+(vector3D v2){
    return vector3D(v2.a+a, v2.b+b, v2.c+c);
}
 
std::ostream& operator <<(std::ostream& out, vector3D& v){
    out<<v.a<<","<<v.b<<","<<v.c;
    return out;
}
 
int main()
{
    vector3D v1(1,2,3);
    vector3D v2(4,3,5);
 
    std::cout << v1+v2;
 
    return 0;
}
Или так
PointsEqual
ниначмуроФ
834 / 518 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
07.04.2010, 23:41  [ТС]     Сложение векторов #11
insideone, у меня на 30 строку компилятор ругается, поэтому я и show использовал

Добавлено через 1 минуту
странно << перегружана же
Psixodelik
40 / 39 / 2
Регистрация: 27.11.2009
Сообщений: 100
07.04.2010, 23:47     Сложение векторов #12
C++
1
2
3
4
std::ostream& operator <<(std::ostream &out, const vector3D &v){
    out<<v.a<<","<<v.b<<","<<v.c;
        return out;
}
Вот так будет...
insideone
Модератор
Автор FAQ
3638 / 916 / 49
Регистрация: 10.01.2010
Сообщений: 2,468
07.04.2010, 23:47     Сложение векторов #13
Цитата Сообщение от PointsEqual
insideone, у меня на 30 строку компилятор ругается, поэтому я и show использовал
Странно, о чем ошибка?
Psixodelik
40 / 39 / 2
Регистрация: 27.11.2009
Сообщений: 100
07.04.2010, 23:49     Сложение векторов #14
Ошибка была о несуществующем операторе "<<"...решается добавлением "const" в перегрузке, вот не помню почему именно так, просто нам так препод когда то объяснял)))
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.04.2010, 23:50     Сложение векторов
Еще ссылки по теме:

Сложение элементов двух векторов с записью в третий - C++
Есть код функции (не дописанная), которая получает в качестве аргументов 2 вектора произвольных типов: template&lt;class T&gt; T&amp;...

Сложение двух векторов и запись результата в третий вектор - C++
Программа заполняет 2 вектора типа float значениями. После чего вектора складываются и результат сложения записывается в третий вектор. Вот...

Умножение векторов - C++
Помогите, пожалуйста, у меня есть два вектора-столбца q1 и q2, как мне их перемножить??!! Добавлено через 25 минут Так будет...

Массив векторов - C++
Как мне создать масив, хранящий в себе вектора??? Вот допустим есть два вектора vector &lt;Objects&gt; s1; // Вектор хранит в...

Вектор векторов - C++
Хочу создать вектор, содержащий векторы, которые содержат строки. Написал такой код: #include &lt;iostream&gt; #include &lt;vector&gt; ...


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

Или воспользуйтесь поиском по форуму:
PointsEqual
ниначмуроФ
834 / 518 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
07.04.2010, 23:50  [ТС]     Сложение векторов #15
K:\c_projects\vector3D_class\main.cpp|30|error: no match for 'operator<<' in 'std::cout << (&v1)->vector3D::operator+(v2)'|
Yandex
Объявления
07.04.2010, 23:50     Сложение векторов
Ответ Создать тему
Опции темы

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