Тема: додавання векторів с++
Привіт всім. Є задача створити кілька векторів (х, у, z) і отримати їхню суму.
Я створив три вектора, в консолі вписав їхні координати і спрацював конструктор додавання який справді працює, тому що при кожному його залученні мені виводилося результат який я виводжу в самому констукторі
template <class T>
T Vector<T>::operator * (const Vector<T> & g){
T suma = 0;
if(n != g.n){
cout<<"no rozmir"<<endl;
return suma;
} else {
for(int i = 0; i<n; i++)
{
[color=red]suma += a[i] * g.a[i];[/color]
}
}
return suma;
}
але чомусь цей результат їхнього додавання не хоче зберігатися в змунну якій я присвоюю їх результат
Vector <int> sum;
[color=red]sum [/color]= array[0] + array[1] + array[2] ;
в чому саме причина? Конструктор копіювання є... а тако =
весь код:
#include <iostream>
using namespace std;
template <class T>
class Vector
{
friend istream & operator >> (istream & is, Vector & v)
{
cout<<"Vvedit vector rozmirom "<<v.n<<":"<<endl;
for(int i = 0; i <v.n; i++)
is>>v.a[i];
return is;
}
friend ostream & operator << (ostream & os, const Vector & v)
{
v.show();
return os;
}
private:
T *a; // masiv
int n; // rozmir mas
public:
Vector();
Vector(int _n);
Vector(const Vector & v);//конструктор копіювання
void show()const;
//void setN();
~Vector();
Vector operator + (const Vector & g);
Vector operator = (const Vector & g);
T operator * (const Vector & g);
};
//
//template <class T>
// void Vector<T>::setN(int _n)
// {
// n = _n;
// };
template <class T>
Vector<T> ::Vector()
{
n=3;
a = new T [3];
for(int i = 0; i < n; i++)
a[i] = 0;
}
template <class T>
Vector<T>::Vector(int _n)
{
n=_n;
a = new T [_n];
for(int i = 0; i < _n; i++)
a[i] = 0;
}
template <class T>
void Vector<T>::show()const
{
for(int i = 0; i < n; i++)
cout<<a[i]<<" ";
cout<<endl;
};
template <class T>
Vector<T>::~Vector()
{
//cout<<"distruct"<<endl;
delete []a;
};
template <class T>
Vector<T> Vector<T>::operator + (const Vector<T> & g)
{
Vector res(n);
if(n != g.n)
{
cout<<"no rozmir"<<endl;
return res;
} else {
for(int i = 0; i < n; i++)
{
res.a[i] = a[i] + g.a[i];
}
cout<<"resultat: "<<res<<endl;
return res;
}
}
template <class T>
T Vector<T>::operator * (const Vector<T> & g){
T suma = 0;
if(n != g.n){
cout<<"no rozmir"<<endl;
return suma;
} else {
for(int i = 0; i<n; i++)
{
suma += a[i] * g.a[i];
}
}
return suma;
}
template <class T>
Vector<T> Vector<T>::operator = (const Vector<T> & g)
{
//cout<<"operator = "<<endl;
Vector res(g.n);
for (int i = 0; i < g.n; i++)
{
res.a[i] = g.a[i];
}
return res;
}
template <class T>
Vector<T>::Vector<T>(const Vector<T> & v)
{
if(this != &v)//порівнюєм дві адреси
{
//cout<<"construkt copy: "<<endl;
n = v.n;
a = new T[n];
for (int i = 0; i < v.n; i++)
{
a[i] = v.a[i];
}
}
}
int main()
{
Vector<int>* array = new Vector<int>[3];
for (int i = 0; i < 3; i++)
{
cin >> array[i];
}
Vector <int> sum;
sum = array[0] + array[1] + array[2] ;
cout << "The sum of all 3 vectors is: " << sum << endl;
system("PAUSE");
return 0;
}