Computer >> Máy Tính >  >> Lập trình >> C ++

Sử dụng lớp để triển khai Đại lượng vectơ trong C ++

Trong hướng dẫn này, chúng ta sẽ thảo luận về một chương trình để hiểu cách sử dụng lớp để triển khai các đại lượng vectơ trong C ++.

Đại lượng vectơ là đại lượng có cả độ lớn và hướng. Ở đây, chúng tôi sẽ triển khai chúng bằng cách sử dụng các lớp và sau đó thực hiện các thao tác cơ bản trên chúng.

Ví dụ

#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);
   Vector operator*(Vector v);
   float magnitude(){
      return sqrt(pow(x, 2) + pow(y, 2) + pow(z, 2));
   }
   friend ostream& operator<<(ostream& out, const Vector& v);
   //outputting the vector
};
// Addition of vectors
Vector Vector::operator+(Vector v){
   int x1, y1, z1;
   x1 = x + v.x;
   y1 = y + v.y;
   z1 = z + v.z;
   return Vector(x1, y1, z1);
}
// Subtraction of vectors
Vector Vector::operator-(Vector v){
   int x1, y1, z1;
   x1 = x - v.x;
   y1 = y - v.y;
   z1 = z - v.z;
   return Vector(x1, y1, z1);
}
// Dot product of vectors
int Vector::operator^(Vector v){
   int x1, y1, z1;
   x1 = x * v.x;
   y1 = y * v.y;
   z1 = z * v.z;
   return (x1 + y1 + z1);
}
// Cross product of vectors
Vector Vector::operator*(Vector v){
   int x1, y1, z1;
   x1 = y * v.z - z * v.y;
   y1 = z * v.x - x * v.z;
   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;
}

Đầu ra

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