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

Работа с векторами в С++ дописать тело программы

02.01.2015, 14:36. Показов 1410. Ответов 1
Метки нет (Все метки)

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
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
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
//---------------------------------------------------------------------------
 
#pragma hdrstop
#include<iostream>
#include<math.h>
 
using namespace std;
 
class Vector
{
    double *vect;                       //  Вектор
    int size;                           //  Размерность вектора
public:
    Vector();                       //  Конструктор по умолчанию
    explicit Vector(int);           //  Конструктор, позволяющий задавать
                                    //  размерность вектора, но не являющийся
                                    //  конструктором преобразования
    Vector(const double*, int);     //  Конструктор, позволяющий
                                    //  проинициализировать вектор с помощью
                                        //  существующего массива
    Vector(const Vector&);              //  Конструктор копирования
    ~Vector();                          //  Деструктор
    Vector& operator = (const Vector&); //  Перегруженный оператор присваивания
    Vector& operator + ();              //  Перегруженный оператор + (унарный)
    Vector operator - ();               //  Перегруженный оператор - (унарный)
    Vector operator + (const Vector&);  //  Сложение двух векторов
    double operator * (const Vector&);  //  Умножение векторов
                                        //  Ввод вектора с клавиатуры
    friend istream& operator >> (istream&, Vector&);
                                        //  Вывод вектора на экран
    friend ostream& operator << (ostream&, Vector&);
    int GetSize();                  //  Функция возвращает размерность вектора
};
 
//--------------------------------------------------------
 Vector::Vector()
{                                   //  Конструктор по умолчанию
    int n;
    cout << "Input array size:\t";
    cin >> n;                       //  Запрос размерности вектора
    while(n <= 0)                   //  Проверка корректности ввода
    {
        cout << "Input array size:\t";
        cin >> n;
    }
    size = n;
    vect = new double[size];        //  Создание вектора заданной длины
}
 
Vector::Vector(int n)
{
    size = n;
    vect = new double[size];        //  Создание вектора заданной длины
}
 
Vector::Vector(const double* v, int n)
{
    size = n;
    vect = new double[size];
    for(int i = 0; i < size; i++)//  Копирование элементов переданного массива
        vect[i] = v[i];          //  в компоненты вектора
}
 
Vector::Vector(const Vector& v)
{                                   //  Конструктор копирования
    size = v.size;
    vect = new double[size];
    for(int i = 0; i < size; i++)
        vect[i] = v.vect[i];
}
 
Vector::~Vector()
{                                   //  Деструктор
    delete [] vect;
}
 
Vector& Vector::operator = (const Vector& v)
{                                   //  Перегруженный оператор присваивания
    if(&v == this)                  //  Проверка на присваивание объекта
        return *this;               //  самому себе
 
                              //  Если передан другой объект, то копируем его
    delete [] vect;                 
    size = v.size;
    vect = new double[size];
    for(int i = 0; i < size; i++)
        vect[i] = v.vect[i];
    return *this;
}
 
istream& operator >> (istream& is, Vector& v)
{                                   //  Ввод компонент вектора с клавиатуры
    for(int i = 0; i < v.size; i++)
    {
        cout << "Input vect[" << i << "]:\t";
        is >> v.vect[i];
    }
    return is;
}
 
ostream& operator << (ostream& os, Vector& v)
{                                   //  Вывод вектора на экран
    os << "Vector:   (";
    for(int i = 0; i < v.size; i++)
    {
        os << v.vect[i];
        if(i == v.size - 1)
            os << ")\n";
        else
            os << ", ";
    }
    return os;
}
 
 
 
 
Vector& Vector::operator + ()
{                                   //  Перегруженный унарный +
    return *this;
}
 
Vector Vector::operator - ()
{                               //  Перегруженный унарный -
    Vector temp(*this);         //  Создание временного объекта и 
                                //  инициализация его текущим объектом
                                //  (объектом, для которого вызвалась функция)
    for(int i = 0; i < size; i++)
        temp.vect[i] = -vect[i];
    return temp;                //  Возврат временного объекта
}
 
Vector Vector::operator + (const Vector& v)
{                                   //  Сложение двух векторов с помощью 
                                    //  перегруженного оператора бинарный +
    if(size == v.size)              //  Если размерности векторов совпадают
    {
        Vector temp(size);          //  Создание временного объекта
        for(int i = 0; i < size; i++)
            temp.vect[i] = vect[i] + v.vect[i];
        return temp;                //  Возврат временного объекта
    }
    else                            //  Если размерности векторов не совпадают
    {
        cout << "Different arrays sizes !!!\nArray is truncating...\n";
                                    //  Урезаем размерность большего вектора
        int s = (size < v.size) ? size : v.size;
        Vector temp(s);             //  Создание временного объекта
        for(int i = 0; i < s; i++)
            temp.vect[i] = vect[i] + v.vect[i];
        return temp;                //  Возврат временного объекта
    }
}
 
 
 
 
double Vector::operator * (const Vector& v)
{                                   //  Умножение двух векторов с помощью
                                    //  перегруженного оператора бинарное *
    double n = 0.0;
    if(size == v.size)              //  Если размерности векторов совпадают
    {
        for(int i = 0; i < size; i++)
            n += vect[i] * v.vect[i];   //  Вычисляем произведение
        return n;                       //  Возвращаем произведение
    }
    else                            //  Если размерности векторов не совпадают
    {
        cout << "Different arrays sizes !!!\nArray is truncating...\n";
                                    //  Урезаем размерность большего вектора                                  
        int s = (size < v.size) ? size : v.size;
        for(int i = 0; i < s; i++)      
            n += vect[i] * v.vect[i];   //  Вычисляем произведение
        return n;                       //  Возвращаем произведение
    }
}
 
 
int Vector::GetSize()
{                               //  Функция, возвращающая размерность вектора
    return size;
}
 
 
// ---------------------------------------------
#pragma argsused
int main(int argc, char* argv[])
{
 
    Vector v(4);                //  Создание вектора
    cin >> v;                   //  Ввод компонент вектора
    cout << 46346<< endl;
 
system("pause");
return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.01.2015, 14:36
Ответы с готовыми решениями:

Работа с векторами
Всем доброго времени суток. У меня имеется не большая проблема с векторами. Я люблю поиграть в...

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

Работа с векторами
Всем привет. Посмотрел, что такое вектор, понял, что это удобная штука) Но ещё не совсем понял...

Разработка класса "вектор"
Добрый день. Нужно написать программу, обеспечивающую ввод двух векторов, а также произвести пару...

1
Модератор
Эксперт С++
13496 / 10751 / 6406
Регистрация: 18.12.2011
Сообщений: 28,692
02.01.2015, 21:13 2
C++
1
2
3
4
5
6
7
8
9
10
double x[4]={1.,2.,3.,4.};
Vector v(x,4);
v=v+v;
cout<<v<<endl;
v=v-v;
cout<<v<<endl;
double a=v*v;
cout<<a<<endl;
a=v<v;
cout<<a<<endl;
0
02.01.2015, 21:13
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.01.2015, 21:13
Помогаю со студенческими работами здесь

Работа с векторами (<vector>)
Здравствуйте, уважаемы программисты))) Кто бы мог мне помочь в таком вопросе: при использовании...

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

Работа над векторами!
Даны вещественные числа a1, a2, ... an. Поменять местами наибольший и наименьший элементы. ...

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


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

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

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