程序.docx
- 文档编号:24351231
- 上传时间:2023-05-26
- 格式:DOCX
- 页数:25
- 大小:36.09KB
程序.docx
《程序.docx》由会员分享,可在线阅读,更多相关《程序.docx(25页珍藏版)》请在冰豆网上搜索。
程序
11.13
类的定义
#ifndefCOMPLEX_H
#defineCOMPLEX_H
#include
usingstd:
:
ostream;
usingstd:
:
istream;
classComplex
{
friendostream&operator<<(ostream&,constComplex&);
friendistream&operator>>(istream&,Complex&);
public:
Complex(double=0.0,double=0.0);//constructor
Complexoperator+(constComplex&)const;//addition
Complexoperator-(constComplex&)const;//subtraction
Complexoperator*(constComplex&)const;//multiplication
Complex&operator=(constComplex&);//assignment
booloperator==(constComplex&)const;
booloperator!
=(constComplex&)const;
private:
doublereal;//realpart
doubleimaginary;//imaginarypart
};//endclassComplex
#endif
成员函数的实现
#include"Complex.h"
#include
usingstd:
:
ostream;
usingstd:
:
istream;//Constructor
Complex:
:
Complex(doublerealPart,doubleimaginaryPart)
:
real(realPart),
imaginary(imaginaryPart)
{//emptybody
}//endComplexconstructor
//additionoperator
ComplexComplex:
:
operator+(constComplex&operand2)const
{
returnComplex(real+operand2.real,
imaginary+operand2.imaginary);
}//endfunctionoperator+
//subtractionoperator
ComplexComplex:
:
operator-(constComplex&operand2)const
{
returnComplex(real-operand2.real,
imaginary-operand2.imaginary);
}//endfunctionoperator-
//Overloadedmultiplicationoperator
ComplexComplex:
:
operator*(constComplex&operand2)const
{returnComplex((real*operand2.real)+(imaginary*operand2.imaginary),
(real*operand2.imaginary)+(imaginary*operand2.real));
}//endfunctionoperator*
//Overloaded=operator
Complex&Complex:
:
operator=(constComplex&right)
{
real=right.real;
imaginary=right.imaginary;
return*this;//enablesconcatenation
}//endfunctionoperator=
boolComplex:
:
operator==(constComplex&right)const
{
return(right.real==real)&&(right.imaginary==imaginary)?
true:
false;
}//endfunctionoperator==
boolComplex:
:
operator!
=(constComplex&right)const
{return!
(*this==right);
}//endfunctionoperator!
=
ostream&operator<<(ostream&output,constComplex&complex)
{
output<<"("< returnoutput;}//endfunctionoperator<< istream&operator>>(istream&input,Complex&complex) {input.ignore();//skip( input>>complex.real; input.ignore (2);//skip','andspace input>>complex.imaginary; input.ignore();//skip) returninput; } 测试函数 #include usingstd: : cout; usingstd: : cin; #include"Complex.h" intmain() { Complexx,y(4.3,8.2),z(3.3,1.1),k; cout<<"Enteracomplexnumberintheform: (a,b)\n? "; cin>>k;//demonstratingoverloaded>> cout<<"x: "< "< "< "< x=y+z;//demonstratingoverloaded+and= cout<<"\nx=y+z: \n"< \n"< cout<<"\nx=y*z: \n"< =k)//demonstratingoverloaded! =cout< ="< cout< return0; } #ifndefHUGEINT_H #defineHUGEINT_H #include usingstd: : ostream; classHugeInt { friendostream&operator<<(ostream&,constHugeInt&); public: HugeInt(long=0); HugeInt(constchar*); HugeIntoperator+(constHugeInt&)const;//HugeInt+HugeInt HugeIntoperator+(int)const;//HugeInt+int HugeIntoperator+(constchar*)const;//HugeInt+string HugeIntoperator*(constHugeInt&)const; HugeIntoperator*(int)const; HugeIntoperator*(constchar*)const; HugeIntoperator<<(int); booloperator==(HugeInt&); booloperator! =(HugeInt&); booloperator>(HugeInt&); booloperator<(HugeInt&); booloperator<=(HugeInt&); booloperator>=(HugeInt&); intgetLength()const; private: shortinteger[30]; }; #endif //成员函数Hugeint.cpp #include usingstd: : cout; usingstd: : endl; #include usingstd: : isdigit;//判断字符是否为数字 #include #include"HugeInt.h" HugeInt: : HugeInt(longvalue) { for(inti=0;i<=29;i++) integer[i]=0; for(intj=29;value! =0&&j>=0;j--) { integer[j]=value%10; value/=10; } } HugeInt: : HugeInt(constchar*string) { for(inti=0;i<=29;i++) integer[i]=0; intlength=strlen(string); for(intj=30-length,k=0;j<=29;j++,k++) if(isdigit(string[k])) integer[j]=string[k]-'0'; } intHugeInt: : getLength()const { for(inti=0;i<=29;i++) if(integer[i]! =0) break; return30-i; HugeIntHugeInt: : operator+(constHugeInt&op2)const { HugeInttemp; intcarry=0; for(inti=29;i>=0;i--) { temp.integer[i]=integer[i]+op2.integer[i]+carry; if(temp.integer[i]>9) { temp.integer[i]%=10; carry=1; } else carry=0; } returntemp; } HugeIntHugeInt: : operator+(intop2)const { return*this+HugeInt(op2); } HugeIntHugeInt: : operator+(constchar*op2)const { return*this+HugeInt(op2); } HugeIntHugeInt: : operator*(constHugeInt&op2)const { HugeIntTEMP("0"); intcarry1=0; intcarry2=0; for(inti=29;i>=29-getLength();i--) { HugeInttemp("0"); for(intj=29;j>=29-op2.getLength();j--) { temp.integer[j]=(integer[i]*op2.integer[j]%10+carry1+carry2)%10; carry1=integer[i]*op2.integer[j]/10; carry2=(integer[i]*op2.integer[j]%10+carry1+carry2)/10; } TEMP=(temp<<29-i)+TEMP; } returnTEMP; } HugeIntHugeInt: : operator<<(intn)//重载移位符号 { HugeInttemp; inti=29; for(intj=0;j { temp.integer[i-n]=integer[i]; } returntemp; } boolHugeInt: : operator==(HugeInt&temp) { if(getLength()==temp.getLength()) { for(inti=0;i { if(integer[i]! =temp.integer[i]) returnfalse; } returntrue; } else returnfalse; } boolHugeInt: : operator! =(HugeInt&temp) { return(! operator==(temp)); } boolHugeInt: : operator<(HugeInt&temp) { for(inti=0;i { if(integer[i]! =temp.integer[i]) { return(integer[i] } } returntrue; } boolHugeInt: : operator<=(HugeInt&temp) { return(*this==temp||*this } boolHugeInt: : operator>(HugeInt&temp) { return(temp<*this); } boolHugeInt: : operator>=(HugeInt&temp) { return(*this==temp||*this>temp); } ostream&operator<<(ostream&output,constHugeInt&num) { for(inti=0;(num.integer[i]==0)&&(i<=29);i++) ; if(i==30) output<<0; else for(;i<=29;i++) output< returnoutput; } //测试函数HugeIntTest.cpp #include usingstd: : cout; usingstd: : endl; #include"Hugeint.h" intmain() { HugeIntn1(7654321); HugeIntn2(7891234); HugeIntn3("99999999999999999999999999999"); HugeIntn4("1"); HugeIntn5; cout<<"n1is"< <<"\nn3is"< <<"\nn5is"< if(n1==n2) cout<<"n1equalsn2"< if(n1! =n2) cout<<"n1isnotequalton2"< if(n1 cout<<"n1islessthann2"< if(n1<=n2) cout<<"n1islessthanorequalton2"< if(n1>n2) cout<<"n1isgreaterthann2"< if(n1>=n2) cout<<"n1isgreaterthanorequalton2"< n5=n1+n2; cout< cout< n5=n1+9; cout< n5=n2+"10000"; cout< n5=n1*n4; cout< return0; } 11.17开发类polynomial 类的定义 #ifndefPOLYNOMIAL_H #definePOLYNOMIAL_H classPolynomial { public: Polynomial(); Polynomialoperator+(constPolynomial&)const; Polynomialoperator-(constPolynomial&)const; Polynomialoperator*(constPolynomial&); constPolynomialoperator=(constPolynomial&); Polynomial&operator+=(constPolynomial&); Polynomial&operator-=(constPolynomial&); Polynomial&operator*=(constPolynomial&); voidenterTerms();voidprintPolynomial()const; intgetNumberOfTerms(); intgetTermExponent(int); intgetTermCoefficient(int); voidsetCoefficient(int,int); ~Polynomial(); intnumberOfTerms; intexponents[100]; intcoefficients[100]; voidpolynomialCombine(Polynomial&); }; #endif 成员函数的实现 #include usingstd: : cin; usingstd: : cout; usingstd: : endl; #include usingstd: : showpos; usingstd: : noshowpos; #include"Polynomial.h" Polynomial: : Polynomial() { for(intt=0;t<100;t++) { coefficients[t]=0; exponents[t]=0; } numberOfTerms=0; } voidPolynomial: : printPolynomial()const { intstart; boolzero=false; if(coefficients[0]) { cout< start=1; zero=true; } else { if(coefficients[1]) { cout< if((exponents[
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序