小明设计了一个多项式类Polynomial,来表示如下形式的多项式: 多项式.jpg 类的构造函数和析构函数已经完成,并已重载了输出运算符<<,以上述多项式的形式输出,输出时不包含任何多余的空格,输出结束后不换行;系数为0的项不输出,系数1或-1的1不输出;负系数不输出+;输出的3次多项式形式如:5.2X^3-X-7。 现在,请你重载复合赋值(+=)运算符函数,实现多项式的加法运算,将另一个多项式加到自身。
时间: 2024-02-28 09:55:30 浏览: 165
好的,我理解了你的问题。下面是实现多项式加法的代码:
```c++
class Polynomial {
private:
double coefficient[101]; // 用数组存储系数,最高次项的指数为100
public:
Polynomial() {
memset(coefficient, 0, sizeof(coefficient)); // 初始化系数为0
}
~Polynomial() {}
friend ostream& operator<<(ostream& os, const Polynomial& p) {
bool first = true;
for (int i = 100; i >= 0; i--) {
if (p.coefficient[i] == 0) continue; // 系数为0的项不输出
if (first) {
os << fixed << setprecision(1) << p.coefficient[i];
first = false;
} else {
if (p.coefficient[i] > 0) os << "+"; // 负系数不输出+
if (p.coefficient[i] != 1 && p.coefficient[i] != -1) {
os << fixed << setprecision(1) << p.coefficient[i];
} else if (p.coefficient[i] == -1) {
os << "-";
}
}
if (i > 1) {
os << "X^" << i;
} else if (i == 1) {
os << "X";
}
}
return os;
}
Polynomial& operator+=(const Polynomial& p) {
for (int i = 0; i <= 100; i++) {
coefficient[i] += p.coefficient[i];
}
return *this;
}
};
```
在该代码中,重载了复合赋值运算符+=,实现了多项式的加法运算。具体来说,对于两个多项式p1和p2,执行p1 += p2操作,就是将p2中的每一项系数加到p1中对应的项上。
阅读全文