Цитата(wir @ 15.12.2009, 18:25 ) | | скалярное произведение=а*b*cos угла между а и b |
тогда уж a*b = |а|*|b|*cos угла между а и b возвращаю cos = a*b/(|а|*|b|), а то непонятно.
| Код | #include <iostream> #include <cmath> using namespace std;
class Vector { private: double a,b,c,d,e; public: Vector(){} Vector(double x,double y, double z, double q, double w) { a=x; b=y; c=x; d=q; e=w; } Vector(Vector &k) { a=k.a; b=k.b; c=k.c; d=k.d; e=k.e; } void Show() { cout << "(" << a << "," << b << "," << c << "," << d << "," << e << ")" << endl; } Vector operator+(Vector &);
friend Vector operator*(int, Vector&); friend double operator*(Vector&, Vector&); }; Vector Vector::operator+(Vector& k) { Vector temp; temp.a = a + k.a; temp.b = b + k.b; temp.c = c + k.c; temp.d = d + k.d; temp.e = e + k.e; return temp; } Vector operator*(int val, Vector& k) { k.a = val*k.a; k.b = val*k.b; k.c = val*k.c; k.d = val*k.d; k.e = val*k.e; return k; } double operator*(Vector& A, Vector& B) { double ab = A.a*B.b + A.b*B.b + A.c*B.c + A.d*B.d + A.e*B.e; double moda = sqrt(A.a*A.b + A.b*A.b + A.c*A.c + A.d*A.d + A.e*A.e); double modb = sqrt(B.a*B.b + B.b*B.b + B.c*B.c + B.d*B.d + B.e*B.e); double cosin = ab/(moda*modb); return cosin; } int main() { Vector v1(1,-2.1,1,1,1),v2(1,1,1,1,1),v3; v3 = v1 + v2; // сумма векторов double x = v1*v2; cout << x << endl; system("pause"); return 0; }
|
|