用c++实现两个一元多项式的乘法运算,以文本文件的方式输入和输出
时间: 2024-04-09 16:32:46 浏览: 92
当然可以!以下是一个用C++实现的程序,可以从文本文件中读取两个一元多项式,并将它们相乘的结果输出到另一个文本文件中:
```cpp
#include <iostream>
#include <fstream>
#include <vector>
// 结构体表示一元多项式的每一项
struct Term {
int coefficient; // 系数
int exponent; // 指数
};
// 函数用于将两个一元多项式相乘,并返回结果
std::vector<Term> multiplyPolynomials(const std::vector<Term>& poly1, const std::vector<Term>& poly2) {
std::vector<Term> result; // 存储结果的多项式
// 逐项相乘
for (const auto& term1 : poly1) {
for (const auto& term2 : poly2) {
Term term;
term.coefficient = term1.coefficient * term2.coefficient;
term.exponent = term1.exponent + term2.exponent;
result.push_back(term);
}
}
// 合并同类项
std::vector<Term> finalResult;
for (const auto& term : result) {
bool found = false;
for (auto& finalTerm : finalResult) {
if (term.exponent == finalTerm.exponent) {
finalTerm.coefficient += term.coefficient;
found = true;
break;
}
}
if (!found) {
finalResult.push_back(term);
}
}
return finalResult;
}
// 函数用于从文本文件中读取一元多项式
std::vector<Term> readPolynomialFromFile(const std::string& filename) {
std::vector<Term> polynomial; // 存储多项式的向量
std::ifstream file(filename);
if (file.is_open()) {
int coefficient, exponent;
while (file >> coefficient >> exponent) {
Term term;
term.coefficient = coefficient;
term.exponent = exponent;
polynomial.push_back(term);
}
} else {
std::cerr << "Failed to open the file: " << filename << std::endl;
}
return polynomial;
}
// 函数用于将一元多项式写入文本文件
void writePolynomialToFile(const std::vector<Term>& polynomial, const std::string& filename) {
std::ofstream file(filename);
if (file.is_open()) {
for (const auto& term : polynomial) {
file << term.coefficient << " " << term.exponent << std::endl;
}
} else {
std::cerr << "Failed to open the file: " << filename << std::endl;
}
}
int main() {
// 从输入文件中读取两个一元多项式
std::vector<Term> polynomial1 = readPolynomialFromFile("input1.txt");
std::vector<Term> polynomial2 = readPolynomialFromFile("input2.txt");
// 计算两个多项式的乘积
std::vector<Term> result = multiplyPolynomials(polynomial1, polynomial2);
// 将结果写入输出文件
writePolynomialToFile(result, "output.txt");
return 0;
}
```
你需要将输入的一元多项式存储在两个文本文件(`input1.txt`和`input2.txt`)中,每一项占一行,格式为"系数 指数"。程序会从这两个文件中读取一元多项式,并将相乘的结果写入另一个文本文件(`output.txt`)。你可以根据需要修改文件名和路径。
阅读全文