运用c++ .编写程序实现一元多项式的创建以及两个一元多项式相加和相乘的操作
时间: 2024-11-12 13:31:42 浏览: 9
在 C++ 中,我们可以使用结构体或类来表示一元多项式,每个项包括系数和幂次。下面是一个简单的例子,展示了如何实现一元多项式类 (`Polynomial`),以及它的加法和乘法操作:
```cpp
#include <iostream>
#include <vector>
class Polynomial {
public:
Polynomial() : coefficients({0}) {}
// 添加一个项到多项式
void addTerm(double coefficient, int exponent) {
coefficients.push_back(std::make_pair(coefficient, exponent));
}
// 打印多项式表达式
void print() const {
for (const auto& term : coefficients) {
if (term.first != 0) {
std::cout << term.first << "x^" << term.second << " + ";
}
}
if (!coefficients.empty()) {
std::cout << "0"; // 移除最后一个+号
}
std::cout << "\n";
}
private:
std::vector<std::pair<double, int>> coefficients; // 系数和指数的存储
};
// 定义相加操作
Polynomial operator+(const Polynomial& p1, const Polynomial& p2) {
Polynomial result;
result.coefficients.reserve(p1.coefficients.size() + p2.coefficients.size());
for (const auto& term1 : p1.coefficients) {
result.addTerm(term1.first, term1.second);
}
for (const auto& term2 : p2.coefficients) {
double combinedCoefficient = term1.first + term2.first;
result.addTerm(combinedCoefficient, std::max(term1.second, term2.second)); // 取较大指数
}
return result;
}
// 定义相乘操作
Polynomial operator*(const Polynomial& p1, const Polynomial& p2) {
Polynomial result(0); // 初始化结果多项式为0
for (int i = 0; i <= p1.coefficients.size(); ++i) {
for (int j = 0; j <= p2.coefficients.size(); ++j) {
double coefProduct = p1.coefficients[i].first * p2.coefficients[j].first;
int expSum = p1.coefficients[i].second + p2.coefficients[j].second;
if (expSum > 0)
result.addTerm(coefProduct, expSum);
}
}
return result;
}
int main() {
Polynomial p1, p2;
p1.addTerm(2, 1); // 2x + 0
p1.addTerm(1, 0); // 1 + 0
p2.addTerm(3, 2); // 3x^2 + 0
p2.addTerm(4, 1); // 4x + 0
Polynomial sum = p1 + p2;
Polynomial product = p1 * p2;
std::cout << "p1(x): " << p1.print() << "\np2(x): " << p2.print() << "\np1+p2(x): " << sum.print() << "\np1*p2(x): " << product.print();
return 0;
}
```
在这个示例中,我们首先定义了一个 `Polynomial` 类,包含了添加项、打印多项式等基本操作。然后,我们为 `Polynomial` 类定义了 `+` 和 `*` 运算符重载,使得它们可以像数学运算一样对多项式进行加法和乘法。
在 `main()` 函数中,我们创建了两个多项式 `p1` 和 `p2`,然后分别计算它们的和与积,并打印结果。
阅读全文