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

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

Войти
Регистрация
Восстановить пароль
 
comcor2013
0 / 0 / 0
Регистрация: 19.08.2013
Сообщений: 138
#1

Перегрузка стандартных операций - C++

03.06.2014, 02:09. Просмотров 217. Ответов 5
Метки нет (Все метки)

Необходимо сложить два вектора. В чем у меня ошибка?

Кликните здесь для просмотра всего текста
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
#include <conio.h>
#include <locale.h>
#define pr print();
#define sl  setlocale(LC_ALL, "rus");
 
class Vector
{
    double *p;
    int n;
public:
    Vector()
    {
        p = 0;
        n = 0;
    }
 
    Vector(double *p, int n)
    {
        this->n = n;
        this->p = new double[n];
        for (int i = 0; i<n; i++)
            this->p[i] = p[i];
    }
 
     const double & operator[] (int index) const
    {
        return p[index];
    }
 
    Vector & operator =(Vector& v2) // Оператор-функция копирования объекта 
    {
        n = v2.n;
        p = new double[n];
        for (int i = 0; i<n; i++) p[i] = v2.p[i];
        return *this;
    }
 
    void print() // Печать вектора (массива)
    {
        printf("\n");
        for (int i = 0; i<n; i++)
            printf(" %.2lf ", p[i]);
    }
 
    ~Vector() // Деструктор
    {
        if (n>0) delete[] p; // Освобождаем память
    }
 
    friend double *operator +(Vector& V1,   double *v2); // Дружественная функция, определенная вне класса. функция результата
};
 
double *operator +(Vector& V1, Vector *v2) 
{ 
    double *p = new double[V1.n];
    for (int i = 0; i<V1.n; i++)
        p[i] = V1.p[i] + v2[i]; 
    return p; 
}
 
int main()
{
    setlocale(LC_ALL, "rus");
    //sl;   echo; //см. #define
    double w1[] = { 1.2, 2.2, 3.6, 4.5, 7 };
    Vector V1(w1, 5); // Создаем объект
    double w2[] = { 8, 3.2, 4, 7.4, 13.1 };
    Vector V2(w2, 5);
    printf("\n");
    V1.pr; // Печать объекта
    V2.pr; // Печать объекта
    printf("\n");
    printf("\nПерегрузка операции []\n");
    for (int i = 0; i<5; i++)
        printf(" %.2f ", V1[i]); // Пример обращения к операции []
    double *w3;
    printf("\n\nПерегрузка операции +");
    w3 = V1 + w2; // Пример выполнения перегруженной операции +   ,  =
    //w3=operator +(V1, w2);                // второй способ сложения векторов, через оператор-функцию
    Vector V3(w3, 5);                    
    printf("\nПечать суммированного вектора \n");
    V3.pr; // Печать полученного объекта
    _getch();
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.06.2014, 02:09     Перегрузка стандартных операций
Посмотрите здесь:

Перегрузка стандартных операций - C++
Здравствуйте! В общем есть задание: Составить описание класса для представления одномерных массивов вещественных чисел (векторов): ...

Перегрузка стандартных операций - C++
Дан класс (например, с именем Vector), задающий вектор размерности n. Поля класса: указатель на массив, задающий вектор (тип элемента int...

Перегрузка стандартных операций - C++
Создать класс &quot;точка на плоскости&quot;. Перегрузить операции: &gt;&gt;,&lt;&lt; (вывод в форме &quot;(x,y)''), унарный - (изменить знак каждой координаты),...

Перегрузка стандартных операций - C++
Создать класс «вектор чисел». Компонентные данные: размерность вектора, указатель на элементы. Перегрузить операции: &gt;&gt;, &lt;&lt;, == (проверка...

Перегрузка стандартных операций - C++
Двозв'язний список Доступ к следующему элементу (++) Автомобиль Операция сравнения «больше» (&gt;). Например, за объединение объемом...

Перегрузка стандартных операций - C++
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;vector&gt; using namespace std; const int n=3; int s=2; int...

Переопределение стандартных операций - C++
Рациональная (несократимая) дробь представляется парой целых чисел (а, b), где а — числитель, b — знаменатель. Создать класс Rational для...

Перегрузка стандартных операторов - C++
Необходимо реализовать класс, который складывает дроби и плюс переопределить стандартные операторы -+/*= Пример: a = 1/2, b = 2/3; z =...

Перегрузка операций - C++
Уважаемые программисты! Помогите новичку! Мне нужно написать программу, в которой реализуется разреженная матрица переменной размерности,...

Перегрузка операций - C++
C++ ругается когда я пытаюсь сделать след-ю перегрузку операций. У меня трехмерный массив matrix и в цикле мне нужно использовать не...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MastAKK
145 / 136 / 12
Регистрация: 13.10.2012
Сообщений: 586
Записей в блоге: 1
03.06.2014, 02:45     Перегрузка стандартных операций #2
Во-первых, непонятные
C++
1
2
V1.pr;
V2.pr;
Во-вторых,
C++
1
 double *operator +(Vector& V1,   double *v2);
Не реализован
Croessmah
Модератор
Эксперт CЭксперт С++
12980 / 7292 / 812
Регистрация: 27.09.2012
Сообщений: 18,007
Записей в блоге: 3
Завершенные тесты: 1
03.06.2014, 02:52     Перегрузка стандартных операций #3
В-третьих, для кого квалификатор const придумали?
comcor2013
0 / 0 / 0
Регистрация: 19.08.2013
Сообщений: 138
05.06.2014, 14:32  [ТС]     Перегрузка стандартных операций #4
Спасибо за наводку всем)
SatanaXIII
05.06.2014, 14:43
  #5

Не по теме:

Цитата Сообщение от Croessmah Посмотреть сообщение
для кого квалификатор const придумали?
Для невнимательных.

zss
Модератор
Эксперт С++
6289 / 5892 / 1910
Регистрация: 18.12.2011
Сообщений: 15,131
Завершенные тесты: 1
05.06.2014, 14:57     Перегрузка стандартных операций #6
53 строка
Цитата Сообщение от comcor2013 Посмотреть сообщение
double *operator +(Vector& V1, Vector *v2)
Надо
C++
1
double *operator +(Vector& V1,   double *v2)
Yandex
Объявления
05.06.2014, 14:57     Перегрузка стандартных операций
Ответ Создать тему
Опции темы

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