实现两个一元多项式相加,利用c++实现
时间: 2024-10-20 16:09:10 浏览: 35
在C++中,我们可以创建一个`Polynomial`类,包含一个动态数组存储多项式的系数以及一个变量表示最高次数。然后,我们可以定义两个方法:一个是构造函数用于初始化多项式,另一个是`add`方法用于计算两个多项式的和。
下面是一个简单的实现示例:
```cpp
#include <iostream>
#include <vector>
class Polynomial {
private:
int degree;
std::vector<double> coefficients;
public:
// 构造函数,接受一个数组作为系数列表及最高次数
Polynomial(const double* coeffs, int deg) : degree(deg) {
for (int i = 0; i <= degree; ++i) {
if (coeffs[i] != 0)
coefficients.push_back(coeffs[i]);
}
}
// 添加两个多项式
Polynomial add(const Polynomial& other) const {
Polynomial result(max(degree, other.degree));
int carry = 0;
for (int i = result.degree; i >= 0; --i) {
result.coefficients[i] = carry + coefficients[i] + other.coefficients[i];
carry = result.coefficients[i] >= 10 ? 1 : 0;
result.coefficients[i] %= 10;
}
if (carry > 0)
result.coefficients.insert(result.coefficients.begin(), carry);
return result;
}
// 打印多项式
void print() const {
if (coefficients.empty()) {
std::cout << "0\n";
} else {
for (int i = degree; i >= 0; --i) {
std::cout << coefficients[i];
if (i > 0) std::cout << "x^" << i;
else std::cout << " ";
}
std::cout << "\n";
}
}
};
int main() {
double a_coeffs[] = {4, 3, 2, 1}; // a(x) = 4x^3 + 3x^2 + 2x + 1
double b_coeffs[] = {5, 2, 0}; // b(x) = 5x^2 + 2
Polynomial a(a_coeffs, 3);
Polynomial b(b_coeffs, 2);
Polynomial sum = a.add(b);
std::cout << "Sum of polynomials: \n";
sum.print();
return 0;
}
```
这个例子中,我们假设多项式只有非负整数系数。在实际应用中,可能需要处理更复杂的情况,例如浮点数系数或者负指数等。
阅读全文