一.问题描述
设计一个描述三维坐标的向量类vector3D,成员如下:
数据成员:
- 三个坐标x,y,z,float类型,私有访问属性
公有函数成员:
- 三个参数均有默认值的构造函数,默认值为0,0,0;
- 重载输入输出运算符,输出格式为(x, y, z);
- 重载加法+、减法-、数乘*(乘数在前,乘数为float类型)这三个运算符;
在主函数中定义两个vector3D类对象v1,v2,均不带参数,之后输入数字1或2选择为v1输入赋值,还是为v1和v2输入赋值,对v1和v2进行加、减运算,对v1进行数乘运算,乘数由用户输入,最后输出三种运算结果。
二.设计思路
按照题目所述写出对应代码即可
三.流程图
四.伪代码
1
五.代码实现
#include<iostream>
using namespace std;
class vector3D {
protected:
float x, y, z;
public:
vector3D() :x(0), y(0), z(0) {}
vector3D operator+(vector3D& a) {
vector3D b;
b.x = x + a.x;
b.y = y + a.y;
b.z = z + a.z;
return b;
}
vector3D operator-(vector3D& a) {
vector3D b;
b.x = x - a.x;
b.y = y - a.y;
b.z = z - a.z;
return b;
}
friend vector3D operator*(int s, vector3D& a) {
vector3D b;
b.x = s * a.x;
b.y = s * a.y;
b.z = s * a.z;
return b;
}
friend istream& operator>>(istream& in, vector3D& a) {
in >> a.x >> a.y >> a.z;
return in;
}
friend ostream& operator<<(ostream& out, vector3D& a) {
out << '(' << a.x << ',' << a.y << ',' << a.z << ')' ;
return out;
}
};
int main() {
vector3D v1, v2, v3;
int n,s;
cin >> n;
if (n == 1) {
cin >> v1;
cin >> s;
cout << v1 << endl;
cout << v1 << endl;
v3 = s * v1;
cout << v3 << endl;
}
if (n == 2) {
cin >> v1 >> v2;
cin >> s;
v3 = v1 + v2;
cout << v3 << endl;
v3 = v1 - v2;
cout << v3 << endl;
v3 = s*v1;
cout << v3 << endl;
}
}
浙公网安备 33010602011771号