Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Triển khai lượng vectơ dùng class trong C++

Lượng vectơ có độ lớn và phương hướng. Triển khai bằng class với các phép toán: cộng, trừ, tích vô hướng, tích có hướng, độ lớn.

Ví dụ

#include <cmath>
#include <iostream>
using namespace std;

class Vector {
private:
    int x, y, z;
public:
    Vector(int x, int y, int z) : x(x), y(y), z(z) {}
    Vector operator+(Vector v);
    Vector operator-(Vector v);
    int operator^(Vector v);   // dot product
    Vector operator*(Vector v); // cross product
    float magnitude() { return sqrt(pow(x,2)+pow(y,2)+pow(z,2)); }
    friend ostream& operator<<(ostream& out, const Vector& v);
};

Vector Vector::operator+(Vector v) { return Vector(x+v.x, y+v.y, z+v.z); }
Vector Vector::operator-(Vector v) { return Vector(x-v.x, y-v.y, z-v.z); }
int Vector::operator^(Vector v) { return x*v.x + y*v.y + z*v.z; }
Vector Vector::operator*(Vector v) {
    return Vector(y*v.z - z*v.y, z*v.x - x*v.z, x*v.y - y*v.x);
}
ostream& operator<<(ostream& out, const Vector& v) {
    out << v.x << "i "; if(v.y >= 0) out << "+ "; out << v.y << "j "; if(v.z >= 0) out << "+ "; out << v.z << "k" << endl; return out;
}

int main() {
    Vector V1(3,4,2), V2(6,3,9);
    cout << "V1 = " << V1;
    cout << "V2 = " << V2;
    cout << "V1 + V2 = " << (V1 + V2);
    cout << "Dot Product: " << (V1 ^ V2);
    cout << "Cross Product: " << (V1 * V2);
    return 0;
}

Đầu ra

V1 = 3i + 4j + 2k
V2 = 6i + 3j + 9k
V1 + V2 = 9i + 7j + 11k
Dot Product: 48
Cross Product: 30i -15j -15k