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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.79
Головастик
0 / 0 / 0
Регистрация: 03.03.2013
Сообщений: 40
#1

Создать производный класс, в котором реализована функция умножения вектора на число и функция сложения двух векторов - C++

03.03.2013, 16:24. Просмотров 1897. Ответов 22
Метки нет (Все метки)

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

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
#include<iostream>
#include<math.h>
using namespace std;
 
class vector
{
    private:
          int x1,
              y1,
              x2,
              y2;
    public:
        vector()
        {
            x1 = x2 = y1 = y2 = 0;
        }
 
        vector(int _x1, int _x2, int _y1, int _y2)
        {
            x1 = _x1;
            x2 = _x2;
            y1 = _y1;
            y2 = _y2;
        }
 
        double length()
        {
            double Kor = ((x2-x1)+(x2-x1)+(y2-y1)+(y2-y1));
            return sqrt(Kor);
        }
 
        void show()
        {
            cout << "begin: x1 = " << x1 <<
                 "  y1 = " << y1 <<
                 "\nend:   x2 = " << x2 <<
                 "  y2 = " << y2 << "\n\n";
        }
          
};
  
 
int main()
{
    vector a(1,1,3,4);
    cout <<"Length: "<< a.length() << endl;
    a.show();
    system("PAUSE");
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.03.2013, 16:24
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Создать производный класс, в котором реализована функция умножения вектора на число и функция сложения двух векторов (C++):

Рекурсия: функция умножения двух чисел, используя только операцию сложения - C++
Напишите функцию умножения двух чисел, используя только операцию сложения(через рекурсию)

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

Создать класс Matrix и функции умножения и сложения матриц - C++
Создайте класс Matrix на базе вектора vector&lt;vector&lt;int&gt;&gt;. Определите операторную функцию ostream&amp; operator&lt;&lt;(ostream&amp;, const Matrix&amp;) для...

Создать класс матриц с целочисленными элементами и определить операции умножения и сложения - C++
Всем привет, помогите с задачей, заранее спасибо. Создать класс матриц с целочисленными элементами и определить операции умножения и...

Есть базовый и производный класс, в базовом определена функция, необходимо её объявить в производном! - C++
Как-то так, что ли: class x { public: void f_0 (){}; }; class y: public x { public: //Тут у меня пойдёт...

Функция сложения двух чисел - C++
здравствуйте все, сидящие на форуме в столь поздний час. Не могли бы вы мне чем нибудь помочь с заданием с института, а то я его совсем...

22
Tulosba
:)
Эксперт С++
4396 / 3232 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
04.03.2013, 16:08 #2
Цитата Сообщение от Головастик Посмотреть сообщение
Write программу
Вы не до конца определились на каком языке общаться?
Производный класс должен быть построен на базе приведенного в коде?
0
Головастик
0 / 0 / 0
Регистрация: 03.03.2013
Сообщений: 40
04.03.2013, 16:23  [ТС] #3
Цитата Сообщение от Tulosba Посмотреть сообщение
Вы не до конца определились на каком языке общаться?
Производный класс должен быть построен на базе приведенного в коде?
да, конечно! На С++ )))
0
Tulosba
:)
Эксперт С++
4396 / 3232 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
04.03.2013, 16:35 #4
Если хотите использовать в качестве базового класса свой vector, то нужно для начала дать доступ к координатам. Либо написать функции доступа, типа getX1(), getY1() ... или сделать данные (x1, y1 ...) protected (вместо private).
1
Головастик
0 / 0 / 0
Регистрация: 03.03.2013
Сообщений: 40
04.03.2013, 16:38  [ТС] #5
Цитата Сообщение от Tulosba Посмотреть сообщение
Если хотите использовать в качестве базового класса свой vector, то нужно для начала дать доступ к координатам. Либо написать функции доступа, типа getX1(), getY1() ... или сделать данные (x1, y1 ...) protected (вместо private).
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include<iostream>
#include<math.h>
using namespace std;
 
class vector
{ 
    protected:
          int x1,
              y1,
              x2,
              y2;
    public:
        vector()
        {
            x1 = x2 = y1 = y2 = 0;
        }
..............
А дальше?..
0
Tulosba
:)
Эксперт С++
4396 / 3232 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
04.03.2013, 16:42 #6
Дальше например так:

C++
1
2
3
4
5
6
7
8
9
10
class SuperVector : public vector
{
    public:
   void Multiply( int mult )
   {
      x1 *= mult; 
      x2 *= mult; 
      ...
   }
}
1
Головастик
0 / 0 / 0
Регистрация: 03.03.2013
Сообщений: 40
04.03.2013, 16:50  [ТС] #7
Цитата Сообщение от Tulosba Посмотреть сообщение
Дальше например так:

C++
1
2
3
4
5
6
7
8
9
10
class SuperVector : public vector
{
    public:
   void Multiply( int mult )
   {
      x1 *= mult; 
      x2 *= mult; 
      ...
   }
}
угу, хорошо. А если сделать перегрузку "сложение векторов" здесь же. То это так:
C++
1
2
 vector operator + (vector a, vector b)
              {return new vector(a.x1 + b.x1, a.y1 + b.y1, a.x2 + b.x2, a.y2 + b.y2);}
ну за правильность операции сложения точно не ручаюсь, но мне сам факт перегрузки функции важен.
0
Tulosba
:)
Эксперт С++
4396 / 3232 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
04.03.2013, 17:04 #8
Наверное все же несколько иначе:
C++
1
2
 vector operator + (const vector& b) const
{ return vector(this->x1 + b.x1, this->y1 + b.y1, this->x2 + b.x2, this->y2 + b.y2);}
1
Головастик
0 / 0 / 0
Регистрация: 03.03.2013
Сообщений: 40
04.03.2013, 17:12  [ТС] #9
Цитата Сообщение от Tulosba Посмотреть сообщение
Наверное все же несколько иначе:
C++
1
2
 vector operator + (const vector& b) const
{ return vector(this->x1 + b.x1, this->y1 + b.y1, this->x2 + b.x2, this->y2 + b.y2);}
При такой раскладке:
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
#include<iostream>
#include<math.h>
using namespace std;
 
class vector
{ 
    protected:
          int x1,
              y1,
              x2,
              y2;
    public:
        vector()
        {
            x1 = x2 = y1 = y2 = 0;
        }
 
        vector(int _x1, int _y1, int _x2, int _y2)
        {
            x1 = _x1;
            x2 = _x2;
            y1 = _y1;
            y2 = _y2;
        }
 
        double length()
        {
            double Kor = ((x2-x1)+(x2-x1)+(y2-y1)+(y2-y1));
            return sqrt(Kor);
        }
 
        void show()
        {
            cout << "begin: x1 = " << x1 <<
                 "  y1 = " << y1 <<
                 "\nend:   x2 = " << x2 <<
                 "  y2 = " << y2 << "\n\n";
        }
        vector operator + (const vector& b) const
        { return vector(this->x1 + b.x1, this->y1 + b.y1, this->x2 + b.x2, this->y2 + b.y2);} 
         
};
 
class action : public vector
{
    public:
   void multi( int mult )
   {
      x1*= mult; 
      y1*= mult; 
      
   }
};
Выдает ошибку: 61 'class vector' has no member named 'multi'
0
Tulosba
:)
Эксперт С++
4396 / 3232 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
04.03.2013, 17:16 #10
Цитата Сообщение от Головастик Посмотреть сообщение
Выдает ошибку: 61 'class vector' has no member named 'multi'
В какой строке? По приведенному коду я не вижу использования multi().
1
Головастик
0 / 0 / 0
Регистрация: 03.03.2013
Сообщений: 40
04.03.2013, 17:20  [ТС] #11
Цитата Сообщение от Tulosba Посмотреть сообщение
В какой строке? По приведенному коду я не вижу использования multi().
Прости, я сама на строку блин сразу не посмотрела, в коде основной программы написала:
C++
1
2
3
4
5
6
7
8
9
10
11
12
int main()
{
    vector a(1,1,3,4);
    vector b(1,1,1,2);
    vector c=a+b;
    cout <<"Length a: "<< a.length() << endl;
    cout <<"Length b: "<< a.length() << endl;
    a.multi(2);
    a.show();
    
    system("PAUSE");
}
Получается, чтобы использовать функцию multi необходимо объявить переменную типа action? тогда как умножить имеющийся вектор a, допустим, на число? как использовать эту функцию можно будет?
0
Tulosba
:)
Эксперт С++
4396 / 3232 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
04.03.2013, 17:28 #12
Цитата Сообщение от Головастик Посмотреть сообщение
чтобы использовать функцию multi необходимо объявить переменную типа action?
Изначально ведь задача ставилась для производного класса. Т.е. новый класс, построенный на базе vector.
Если производный класс всё же не нужен, то можно просто расширить имеющийся. Убрать action и перенести multy внутрь vector.
0
Головастик
0 / 0 / 0
Регистрация: 03.03.2013
Сообщений: 40
04.03.2013, 17:40  [ТС] #13
Цитата Сообщение от Tulosba Посмотреть сообщение
Изначально ведь задача ставилась для производного класса. Т.е. новый класс, построенный на базе vector.
Если производный класс всё же не нужен, то можно просто расширить имеющийся. Убрать action и перенести multy внутрь vector.
нет, производный класс нужен, просто перегруженная функция сложения в рамках action выдала у меня кучу ошибок, например:
11 `int vector::y2' is protected
52 within this context
......

Поэтому я ее и кинула в vector, чтобы проверить работоспособность функции.. А multi обязательно надо в action. Напишите плиз, как ей пользоваться в теле основной проги??
0
Tulosba
:)
Эксперт С++
4396 / 3232 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
04.03.2013, 17:58 #14
Вот готовый код, если что не понятно, спрашивайте.
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
#include<iostream>
#include<math.h>
using namespace std;
 
class vector
{ 
    protected:
          int x1,
              y1,
              x2,
              y2;
    public:
        vector()
        {
            x1 = x2 = y1 = y2 = 0;
        }
 
        vector(int _x1, int _y1, int _x2, int _y2)
        {
            x1 = _x1;
            x2 = _x2;
            y1 = _y1;
            y2 = _y2;
        }
 
        double length()
        {
            double Kor = ((x2-x1)+(x2-x1)+(y2-y1)+(y2-y1));
            return sqrt(Kor);
        }
 
        void show()
        {
            cout << "begin: x1 = " << x1 <<
                 "  y1 = " << y1 <<
                 "\nend:   x2 = " << x2 <<
                 "  y2 = " << y2 << "\n\n";
        }
};
 
class action : public vector
{
public:
    action(int x1, int y1, int x2, int y2) :
      vector( x1, y1, x2, y2 ) {}
 
    void multi( int mult )
    {
      x1 *= mult; 
      y1 *= mult; 
      x2 *= mult; 
      y2 *= mult; 
    }
 
    action operator + (const action& b) const
    { 
        return action(this->x1 + b.x1, this->y1 + b.y1, this->x2 + b.x2, this->y2 + b.y2);
    } 
};
 
 
int main()
{
    action a(1,1,3,4);
    action b(1,1,1,2);
    action c=a+b;
    cout <<"Length a: "<< a.length() << endl;
    cout <<"Length b: "<< a.length() << endl;
    a.multi(2);
    a.show();
    
    system("PAUSE");
}
1
Головастик
0 / 0 / 0
Регистрация: 03.03.2013
Сообщений: 40
04.03.2013, 18:03  [ТС] #15
Цитата Сообщение от Tulosba Посмотреть сообщение
Вот готовый код, если что не понятно, спрашивайте.
C++
1
2
3
4
5
#include<iostream>
#include<math.h>
using namespace std;
 ........
}
упс! Всё крайне понятно. Просто объявляешь векторы как класс action и пользуешься всеми функциями. Спасибооо)) А можно еще один дополнительный вопрос? если нет - я не обижусь!
0
04.03.2013, 18:03
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.03.2013, 18:03
Привет! Вот еще темы с ответами:

функция сложения двух чисел - C++
Написать функцию сложения двух чисел, используя только прибавление единицы.

Функция умножения двух массивов - C++
Даны два массива символов a и b (состоят из цифр), репрезентирующие два целых положительных числа. Создать функцию, которая создаёт третий...

Класс с полем - динамический массив. Функция сложения массивов - C++
Я написал класс, который содержит динамический массив целых чисел. Создал два объекта типа класс. У меня не получается сделать перегрузку...

Функция: вернуть вектор, в котором есть все числа из исходного вектора v, кроме заданного x - C++
есть вот такая задача ф-цию filter, которая принимает вектор чисел v и аргумент x. Она возвращает вектор, в котором есть все числа из v,...


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

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

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