1、 Node(float c, int e, Node* next); Node(); float coef; /系数 int exp; /指数 Node* Next; /指向下一项的指针 friend class Polynominal; 节点类,储存一元多项式每一项的信息。该内含有两个构造函数,一个析构函数及存储系数、指数和Next指针等成员变量。与Polynominal是友元关系,允许Polynominal的访问。 具体成员函数如下:1) Node:Node() 默认构造函数。2) Node(float c, int e, Node* next) coef = c; exp = e; Ne
2、xt = next; 重载的自定义构造函数,用于给成员变量coef、exp和Next存入数据,Next指向传参来的next指针指向的地址,用于构造链表。2.class Polynominal Polynominal(); Polynominal(Polynominal &a); /拷贝构造函数 void GetMSG(CString TempPloy); /获取由对话框输入的字符串并处理 CString Output_Node(); /输出最后结果 void PolyAdd(Polynominal &a, Polynominal &b); /加法 void PolySubtract(Polyn
3、ominal & /减法 void PolyMultiply(Polynominal & /乘法 void PolySort(); /排序函数,用于乘法之后的按指数排序 void OutFile(); /文本输出函数 void OutFile(Polynominal &b, string ch); /重载文本输出函数 void OpposeCoef(Polynominal &a, Node *temp); /系数取反,用于减法运算 Node theList; /头节点 ofstream FOut; /输出流 此类用于构造一元多项式。包括加、减、乘各各功能函数,还有两个帮助运算的辅助函数,以及界
4、面输入输出和文本输出函数。成员变量有头节点和输出流。Polynominal:Polynominal() 默认构造函数Polynominal(Polynominal &a) Node* temp = a.theList.Next; Node* tempNode = &theList; for (; temp != NULL;) tempNode-Next = new Node(temp-coef, temp-exp, NULL); temp = temp-Next; tempNode = tempNode- 拷贝构造函数,用于计算时对象间的赋值,防止误改数据。3) void Polynomina
5、l:GetMSG(CString TempPoly) TempPoly.Remove(_T(); Node* TempNode = & int i = 0; for (i;iTempPoly.GetLength(); ) CString temp1 ; CString temp2 ; int j = 1; if (TempPoly.GetAt(i) =_T(-) temp1 = temp1 + TempPoly.GetAt(i); i+; if (TempPoly.GetAt(i) = _T(+x) ) temp1 = temp1 +_T(1); while(j=1) if (TempPoly
6、.GetAt(i) != _T( temp1 = temp1 + TempPoly.GetAt(i); i+; else j=0; i+; if (i (TempPoly.GetLength()-1) & TempPoly.GetAt(i) = _T( temp2 = temp2 + TempPoly.GetAt(i); if (i = (TempPoly.GetLength()-1) &) temp2 = temp2 + _T( else if (i = TempPoly.GetLength() & TempPoly.GetAt(i-1) = _T( temp2 = temp2 + _T(
7、else while (i Next = new Node(_ttof(temp1), _ttoi(temp2), NULL); /链表构建 TempNode = TempNode- 此函数用于把从对话框获取的字符串进行处理,截取出多项式各项系数和指数,并转换为float型和int型,构造一元多项式链表。4) CString Polynominal:Output_Node() int first = 0; CString temp; CString temp_coef; CString temp_exp; Node* TempNode = theList.Next; for (; TempNo
8、de ! TempNode = TempNode-Next) if (first = 1 & TempNode-coef 0) temp = temp + _T(+) ; temp_coef.Format(_T(%g), TempNode-coef); temp_exp.Format(_T(%d),TempNode-exp); switch (TempNode-exp) case 0:temp = temp + temp_coef; break; /指数为0则推出 case 1:if (TempNode-coef=1) /指数为1则直接输出X temp = temp + _T(x else t
9、emp = temp + temp_coef + _T( break; default:coef = 1) /其余指数输出“X”形式)+temp_exp; else temp = temp + temp_coef + _T(x break; first = 1; return temp; 输出函数,将计算所得结果输出到对话框。5) PolyAdd(Polynominal &b) Node *p, *q, *temp; temp = & p = a.theList.Next; q = b.theList.Next; while (p != NULL & q != NULL) if (p-exp)
10、 (q-exp) temp-Next = new Node(p-coef, p- temp = temp- p = p- else if (p-exp) = (q-coef + q- q = q-exp) coef, q- if (q ! while (q ! if (p ! while (p !加法函数,实现多项式的相加。在其中需要判断各项指数的关系,已实现按指数大小关系构建链表。6) OpposeCoef(Polynominal &a, Node *temp) temp = a.theList.Next; while (temp ! temp-coef = -(temp- 在执行减法操作时,用此函数将被减多项式各位系数取反,之后可直接调用加法函数进行运算;7) PolySubtract(Polynominal &b
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1