|
- /****************************multinomial V0.1********************************/
- /****这个类是看到论坛上有人问多项式的数据结构写的,只实现了多项式加法********/
- /****当然,这个类还可以扩展,可以重载*运算符,-运算符等等,还有构造***********/
- /****函数也可以再进行扩展,使多项式初始化界面能够再漂亮一些******************/
- /****我的C++不太好,英文单词也是用金山词霸查的,也许变量定义的不太好*******/
- /****请大家指正**************************************************************/
- #ifndef _multinomial_h
- #define _multinomial_h
- #include <deque>
- #include <exception>
- namespace com_ybokham_multinomial //学习java的名字空间规则
- {
- using namespace std;
- class multinomial //multinomial的中文意思是多项式
- {
- private:
- deque<double> data; //使用STL中的deque容器作为多项式系数的容器
- int length; //多项式变量的最高指数,其实跟data.size()相等
- public:
- multinomial():data(deque<double>()),length(0){} //默认构造函数
-
- multinomial(size_t size,const double val = 0):data(deque<double>(size,val)),length(size)
- {} //已知最高幂指数的构造函数
-
- multinomial(multinomial &in):data(in.getData()),length(in.getLength())
- {} //拷贝构造函数
-
- void setCoefficient(int power, doublecoefficient)//Coefficient的英文意思是系数
- { //这个函数用来给那些已经初始化deque大小的多项式
- data.at(power) = coefficient; //设置各系数
- }
- void setCoefficient(double coefficient) //这个函数用来给使用默认构造函数构造的多项式
- { //设置系数
- data.push_front(coefficient);
- length = data.size();
- }
- double &getCoefficient(int power)//获得指定幂指数的系数
- {
- return data.at(power);
- }
- multinomial &operator=(multinomial &in) //重载=运算符
- {
- this->data = in.getData();
- this->length = in.getLength();
- return *this;
- }
-
- int &getLength() //得到多项式的最高次幂
- {
- return length;
- }
- deque<double> &getData() //得到多项式的各系数
- {
- return data;
- }
- multinomial &operator+(multinomial &in) //重载+运算符
- {
- int shortSize = this->getLength() < in.getLength()?this->getLength():in.getLength();
- int longSize = this->getLength()> in.getLength()?this->getLength():in.getLength();
- for(int i=0;i<shortSize;++i)
- {
- this->setCoefficient(i,(this->getCoefficient(i)+in.getCoefficient(i)));
- }
- if(this->getLength() >= in.getLength())
- {
- return *this;
- }
- else
- {
- this->data.resize(in.getLength());
- for(int i=shortSize;i<longSize;++i)
- {
- this->setCoefficient(i,in.getCoefficient(i));
- }
- length = this->data.size();
- return *this;
- }
- }
- };
- }
- #endif
复制代码 |
|