Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

ใช้คลาสนำไปสู่ Vector Quantities ใน C++


ในบทช่วยสอนนี้ เราจะพูดถึงโปรแกรมเพื่อเข้าใจวิธีใช้คลาสนำไปสู่ปริมาณเวกเตอร์ (vector quantities) ใน C++

ปริมาณเวกเตอร์คือปริมาณที่มีทั้งขนาด (magnitude) และทิศทาง (direction) ที่นี่เราจะนำไปสู่การใช้งานด้วยคลาสและทำการดำเนินการพื้นฐานต่างๆ

ตัวอย่างโค้ด

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

class Vector {
private:
    int x, y, z; // components of the Vector
public:
    Vector(int x, int y, int z) {
        this->x = x;
        this->y = y;
        this->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);
};

// Addition of vectors
Vector Vector::operator+(Vector v) {
    int x1 = x + v.x;
    int y1 = y + v.y;
    int z1 = z + v.z;
    return Vector(x1, y1, z1);
}

// Subtraction of vectors
Vector Vector::operator-(Vector v) {
    int x1 = x - v.x;
    int y1 = y - v.y;
    int z1 = z - v.z;
    return Vector(x1, y1, z1);
}

// Dot product of vectors
int Vector::operator^(Vector v) {
    int x1 = x * v.x;
    int y1 = y * v.y;
    int z1 = z * v.z;
    return (x1 + y1 + z1);
}

// Cross product of vectors
Vector Vector::operator*(Vector v) {
    int x1 = y * v.z - z * v.y;
    int y1 = z * v.x - x * v.z;
    int z1 = x * v.y - y * v.x;
    return Vector(x1, y1, z1);
}

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 is : " << (V1 ^ V2);
    cout << "Cross Product is : " << (V1 * V2);
    return 0;
}

เอาต์พุต

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