c++请设计角度类 ANGLE,实现角度的输入、输出和加法运算。
时间: 2024-03-17 22:47:12 浏览: 122
好的,以下是角度类 ANGLE 的设计:
```cpp
class ANGLE {
public:
ANGLE() : degree(0), minute(0), second(0) {}
ANGLE(int d, int m, int s) : degree(d), minute(m), second(s) {}
// 输入输出
friend std::istream& operator>>(std::istream& in, ANGLE& a);
friend std::ostream& operator<<(std::ostream& out, const ANGLE& a);
// 加法运算
ANGLE operator+(const ANGLE& other) const;
private:
int degree; // 度
int minute; // 分
int second; // 秒
// 辅助函数
void normalize(); // 规范化角度
};
// 输入输出
std::istream& operator>>(std::istream& in, ANGLE& a) {
in >> a.degree >> a.minute >> a.second;
a.normalize(); // 规范化角度
return in;
}
std::ostream& operator<<(std::ostream& out, const ANGLE& a) {
out << a.degree << "°" << a.minute << "'" << a.second << "\"";
return out;
}
// 加法运算
ANGLE ANGLE::operator+(const ANGLE& other) const {
int d = degree + other.degree;
int m = minute + other.minute;
int s = second + other.second;
return ANGLE(d, m, s);
}
// 规范化角度
void ANGLE::normalize() {
int m = second / 60;
second %= 60;
minute += m;
int d = minute / 60;
minute %= 60;
degree += d;
}
```
使用方法如下:
```cpp
ANGLE a, b;
std::cin >> a >> b;
ANGLE c = a + b;
std::cout << c << std::endl;
```
其中,输入格式为 `度 分 秒`,输出格式为 `度°分'秒"`。
阅读全文