前言
C++ 代码实例:多项式除法简单计算工具。
代码仓库
代码
说明
- 由于代码篇幅较多,在博客中直接粘贴并呈现会显得冗长,因此未在博客中放置完整代码,只展示核心片段代码。请前往”代码仓库”查看或获取相关代码
- 简单地计算多项式除法
- 注释有详细的步骤解析
- 好用的多项式除法在线计算网址:在线计算器: 多项式除法 (planetcalc.com)
- 多项式除法,被除数和除数写在程序中:main.exe、main.cpp、polynomial.cpp、polynomial.h
- 多项式除法,在终端输入被除数和除数:main1.exe、main1.cpp、polynomial.cpp、polynomial.h
注:一个晚上一个早上完成,应该大部分结果对,若出现小部分结果错误懒得管了,逻辑差不多那样
核心片段
polynomial.h
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| #ifndef POLYNOMIAL_H #define POLYNOMIAL_H
#include <vector> #include <iostream>
using std::ostream; using std::vector;
class Polynomial { public: explicit Polynomial(const vector<int> &p) : poly_vec(p) {}
friend ostream &operator<<(ostream &output, const Polynomial &obj);
Polynomial operator/(const Polynomial &divisor) const;
Polynomial operator%(const Polynomial &divisor) const;
private: const vector<int> poly_vec; };
#endif
|
polynomial.cpp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82
|
ostream &operator<<(ostream &output, const Polynomial &obj) { UINT terminal_code_page = GetConsoleOutputCP(); if (terminal_code_page != 65001) { system("chcp 65001"); } else { }
for (int i = obj.poly_vec.size() - 1; i >= 0; --i) { if (obj.poly_vec.at(i) >= 0) { cout << "+"; } else { }
cout << obj.poly_vec.at(i);
cout << "x";
vector<string> superscript_utf8{"\u2070", "\u00B9", "\u00B2", "\u00B3", "\u2074", "\u2075", "\u2076", "\u2077", "\u2078", "\u2079"};
cout << superscript_utf8.at(i); }
return output; }
Polynomial Polynomial::operator/(const Polynomial &divisor) const { vector<int> dividend_vec(this->poly_vec); vector<int> divisor_vec(divisor.poly_vec);
vector<int> quotient_vec((dividend_vec.size() - 1) - (divisor_vec.size() - 1) + 1, 0);
if ((dividend_vec.size() - 1) < (divisor_vec.size() - 1)) { quotient_vec.resize(1, 0); } }
Polynomial Polynomial::operator%(const Polynomial &divisor) const { }
|
main.cpp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| #include "polynomial.h"
using std::cout; using std::endl;
int main() { const vector<int> dividend_vec{1, 2, 3, 4}; const vector<int> divisor_vec{3,2,1};
const Polynomial dividend(dividend_vec); const Polynomial divisor(divisor_vec); cout << "被除数: " << dividend << endl; cout << "除数: " << divisor << endl;
Polynomial quotient = dividend / divisor; cout << "商: " << quotient << endl;
Polynomial remainder = dividend % divisor; cout << "余数: " << remainder << endl;
return 0; }
|
main1.cpp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
|
using std::cin; using std::cout; using std::endl; using std::getline; using std::istringstream; using std::string;
int main() { // 终端输入被除数和除数 // int 型向量表示多项式,x作为形式参数无具体意义只有方便理解的展示意义,索引表示次数,值表示系数 // 如 {1, 2},索引0值1表示1x⁰,索引1值2表示2x¹,所以多项式是:2x¹ + 1x⁰ = 2x + 1 // 1. 被除数 vector<int> dividend_vec(0);
cout << "被除数系数,从高到低位输入,空格分隔,回车结束: " << endl; string input(""); getline(cin, input); // 从终端获取一行输入
istringstream iss(input); // 字符串 -> 输入流对象 int num(0); while (iss >> num) // 输入流对象 -> 数字 { dividend_vec.insert(dividend_vec.begin(), num); // 从后往前插入 }
// 2. 除数 vector<int> divisor_vec(0);
cout << "除数系数,从高到低位输入,空格分隔,回车结束: " << endl; input = ""; getline(cin, input);
iss.clear(); // 清楚流状态,否则获取不到数字 iss.str(input); num = 0; while (iss >> num) { divisor_vec.insert(divisor_vec.begin(), num); }
// 多项式类表示多项式,进一步封装 const Polynomial dividend(dividend_vec); const Polynomial divisor(divisor_vec); cout << "被除数: " << dividend << endl; cout << "除数: " << divisor << endl;
// 多项式除法求商 Polynomial quotient = dividend / divisor; cout << "商: " << quotient << endl;
// 多项式除法求余数 Polynomial remainder = dividend % divisor; cout << "余数: " << remainder << endl;
return 0; }
|
Makefile
1 2 3 4 5 6 7 8 9 10 11 12
| .PHONY : all all : main.exe main1.exe
main.exe : main.cpp polynomial.cpp g++ -o $@ $^
main1.exe : main1.cpp polynomial.cpp g++ -o $@ $^
.PHONY : clean clean : del *.exe
|
结果
总结
C++ 代码实例:多项式除法简单计算工具。
参考资料
作者的话
- 感谢参考资料的作者/博主
- 作者:夜悊
- 版权所有,转载请注明出处,谢谢~
- 如果文章对你有帮助,请点个赞或加个粉丝吧,你的支持就是作者的动力~
- 文章在描述时有疑惑的地方,请留言,定会一一耐心讨论、解答
- 文章在认识上有错误的地方, 敬请批评指正
- 望读者们都能有所收获