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

Разработать класс «Вектор»

05.03.2018, 15:00. Показов 16308. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Разработать класс «Вектор» – Vector размерности n . Определить несколько конструкторов, в том числе конструктор копирования. Реализовать методы для вычисления модуля вектора, скалярного произведения, сложения, вычитания, умножения на константу. Перегрузить операции сложения, вычитания, умножения, инкремента, декремента, индексирования, присваивания для данного класса. Создать массив объектов. Написать функцию, которая для заданной пары векторов будет определять, являются ли они коллинеарными или ортогональными.

Добавлено через 23 минуты
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
#include<iostream>
#include<math.h>
#include<windows.h>
using namespace std;
//--------------------------------------------------------------
//----------- Определение класса -------------------------------
//--------------------------------------------------------------
class vektor
{
private:
    int n;                 //Размер вектора
    float* ptrArr;     //Указатель на массив элементов
public:
    vektor()
    {
        n = 3;
        ptrArr = new float [n];
    }
    vektor(int num)
    {
        n = num;
        ptrArr = new float [n];
    }
    ~vektor()
    { delete [] ptrArr; }
    void GetVektor()        //Задать вектор
    {
        //cout << "Введите размерность вектора: "; cin >> n;
        for (int i=0; i < n; i++ )
        {
            cout << "Введите элемент вектора № " << i << ": ";
            cin >> *(ptrArr + i);
        }
    }
    float ArrModul()        //Вычислить модуль
    {
        float modul = 0;
        for (int i=0; i < n; i++ )
            modul += *(ptrArr + i) *  *(ptrArr + i);
        return sqrt (modul);
    }
    void ShowVektor()       //Показать вектор
    {
        cout << "Вектор [";
        for (int i=0; i < n; i++ )
            cout << *(ptrArr + i) << ", ";
        cout << " ]\n";
 
    }
    vektor operator= (vektor v)
    {
        for (int i=0; i < n; i++ )
            *(ptrArr + i) = *(v.ptrArr + i);
        return *this;
    }
 
    friend float Skalar   (vektor* , vektor*);  //Склярное произведение
 
    friend bool Kolliniar(vektor* , vektor* );  //Проверка на коллинеарность
    friend bool Ortogonal(vektor* , vektor* );  //Проверка на ортогональность
 
    friend vektor Kommutativ(vektor* , vektor* );//Сложение векторов
    friend vektor Netativ   (vektor* , vektor* );//ВЫчитание векторов
};
//--------------------------------------------------------------
//----------- Определение дружественных функций ----------------
//--------------------------------------------------------------
vektor Kommutativ(vektor* vector1, vektor* vector2)
{
    vektor temp;
    for (int i=0; i < vector1->n; i++ )
        *(temp.ptrArr + i) = *(vector1->ptrArr + i) + *(vector2->ptrArr + i);
    return temp;
}
vektor Netativ(vektor* vector1, vektor* vector2)
{
    vektor temp;
    for (int i=0; i < vector1->n; i++ )
        *(temp.ptrArr + i) = *(vector1->ptrArr + i) - *(vector2->ptrArr + i);
    return vektor(temp);
}
float Skalar (vektor* vector1, vektor* vector2)
{
    static float temp;
    temp = 0;
    for (int i=0; i < (*vector1).n; i++ )
        temp += *(vector1->ptrArr + i) * *(vector2->ptrArr + i);
    return temp;
}
bool Ortogonal (vektor* vector1, vektor* vector2)
{
    if ( (Skalar (vector1, vector2)) < 0.01 )
        return true;
    else
        return false;
}
bool Kolliniar (vektor* vector1, vektor* vector2)
{
    if ( (Skalar (vector1, vector2) - ((*vector1).ArrModul() * (*vector2).ArrModul())) < 0.01 )
        return true;
    else
        return false;
}
 
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
 
    vektor v1(3), v2(3), v(3);
    v1.GetVektor();
    v2.GetVektor();
 
    cout << Skalar(&v1, &v2) << endl;
 
    v = Kommutativ(&v1, &v2);
    v.ShowVektor();
 
    cout << "Ортогональность: " << Ortogonal(&v1, &v2) << endl;
    cout << "Коллинеарность: "  << Kolliniar(&v1, &v2) << endl;
    system("pause");
    return 0;
}
Добавлено через 25 секунд
Так правильно?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
05.03.2018, 15:00
Ответы с готовыми решениями:

Разработать класс вектор
Если в задании требуется разработать класс, то он должен включать: - компоненты данные - методы: а) конструктор по умолчанию; б)...

Разработать класс, описывающий вектор на плоскости
1. «Работа с классами. Объявление классов, наследование». На языке С++ разработать класс, описывающий вектор на плоскости. Реализовать...

Разработать класс Vector – геометрический вектор произвольной размерности
Разработать класс Vector – геометрический вектор произвольной размерности (размерность задается в конструкторе вектора). Реализовать метод...

2
475 / 427 / 290
Регистрация: 10.03.2015
Сообщений: 1,782
05.03.2018, 15:34
Цитата Сообщение от Rock666 Посмотреть сообщение
Так правильно?
Если исходить из задания, то нет.
1. Конструктора копирования определен неверно.
2. Нет перегруженных методов что необходимы.

Далее:
1) создать массив - в принципе пойдет, но массив, есть массив, а не просто создать 3 экземпляра класса.
2) код хорошо бы запихивать в блок [CPP][/ CPP], ужасное восприятие и тяжело читать.

Перегрузка операторов:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class vektor
{
...
    vector& operator = (const vector&); //копии
    void operator () (int);
    bool operator == (const vector&);
    void operator ++ (); //префиксная форма инкремента
    void operator ++(int); //постфиксная форма
    void operator + (const vector&);
    void operator + (float);
    void operator += (float);
    void operator += (const vector&);
//если необходимо перегрузить вывод/ввод
    friend ostream& operator<<(ostream&, const vector&);
    friend istream& operator>>(istream&, vector&);
...
}
Реализацию при необходимости могу прописать.
Пример копии:
C++
1
2
3
4
5
6
7
8
vector& vector::operator = (const vector &obj)
{
    n = obj.n;
    this->ptrArr = new float[n];
    for (int i = 0; i < n; i++)
        this->ptrArr[i] = obj.ptrArr[i];
    return *this;
}
0
0 / 0 / 0
Регистрация: 14.10.2018
Сообщений: 56
30.11.2020, 22:04
здравствуйте, можете написать реализацию для + , +=
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
30.11.2020, 22:04
Помогаю со студенческими работами здесь

Разработать класс, одной из компонент которого является вектор чисел
Нужно написать прогу, сам пытался но не смог. (желательно с обьяснением) Заранее спасибо! Разработать класс А, одной из компонент...

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

Разработать класс "Вектор" и реализовать операцию векторного умножения векторов
тема классы C++ !! разработать класс вектор и реализовать операцию векторного умножения векторов(develop and implement a class of vector...

Разработать класс "вектор" и реализовать операцию векторного умножения векторов
Разработать класс &quot;вектор&quot; и реализовать операцию векторного умножения векторов #include &lt;vcl.h&gt; #include &lt;vector&gt; ...

Нужно разработать класс "вектор" и реализовать операцию векторного умножения векторов
Помогите, пожалуйста, не могу разобраться что не так ! #include &lt;vcl.h&gt; #include &lt;vector&gt; #include &lt;conio.h&gt; #include...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru