C++实验十二.docx
《C++实验十二.docx》由会员分享,可在线阅读,更多相关《C++实验十二.docx(15页珍藏版)》请在冰豆网上搜索。
C++实验十二
1.classRectangle{
intleft,top;
intright,bottom;
public:
Rectangle(intl=0,intt=0,intr=0,intb=0);
~Rectangle(){};
voidAssign(intl,intt,intr,intb);
voidSetLeft(intt){left=t;}
voidSetRight(intt){right=t;}
voidSetTop(intt){top=t;}
voidSetBottom(intt){bottom=t;}
voidShow();
Rectangleoperator+=(Rectangle&);
Rectangleoperator-=(Rectangle&);
friendRectangleoperator-(Rectangle&,Rectangle&);
friendRectangleoperator+(Rectangle&,Rectangle&);
};
#include"rect.h"
#include
usingnamespacestd;
Rectangle:
:
Rectangle(intl,intt,intr,intb){
left=l;
top=t;
right=r;
bottom=b;
}
voidRectangle:
:
Assign(intl,intt,intr,intb){
left=l;
top=t;
right=r;
bottom=b;
}
voidRectangle:
:
Show(){
cout<<"left-toppointis("<cout<<"right-bottompointis("<}
RectangleRectangle:
:
operator+=(Rectangle&rect){
intx=rect.right-rect.left;
inty=rect.bottom-rect.top;
right+=x;
bottom+=y;
returnRectangle(left,top,right,bottom);
}
RectangleRectangle:
:
operator-=(Rectangle&rect){
intx=rect.right-rect.left;
inty=rect.bottom-rect.top;
right-=x;
bottom-=y;
returnRectangle(left,top,right,bottom);
}
Rectangleoperator-(Rectangle&rect1,Rectangle&rect2){
rect1-=rect2;
returnrect1;
}
Rectangleoperator+(Rectangle&rect1,Rectangle&rect2){
rect1+=rect2;
returnrect1;
}
#include
#include"rect.h"
usingnamespacestd;
intmain(){
Rectanglerect;
cout<<"初始rect:
"<rect.Show();
rect.Assign(100,200,300,400);
cout<<"赋值后rect:
"<rect.Show();
Rectanglerect1(0,0,200,200);
cout<<"初始rect1:
"<rect1.Show();
rect+=rect1;
cout<<"与rect相加后的rect:
"<rect.Show();
rect-=rect1;
cout<<"减去rect1后的rect:
"<rect.Show();
Rectanglerect2;
rect2=rect+rect1;
cout<<"rect与rect1相加所得的rect2:
"<rect2.Show();
rect2=rect-rect1;
cout<<"rect减去rect1所得的rect2:
"<rect2.Show();
return0;
}
2。
classRectangle{
intleft,top;
intright,bottom;
public:
staticintCounter;
Rectangle(intl=0,intt=0,intr=0,intb=0);
~Rectangle(){};
voidAssign(intl,intt,intr,intb);
voidSetLeft(intt){left=t;}
voidSetRight(intt){right=t;}
voidSetTop(intt){top=t;}
voidSetBottom(intt){bottom=t;}
voidShow();
Rectangleoperator+=(Rectangle&);
Rectangleoperator-=(Rectangle&);
Rectangleoperator-(Rectangle&);
Rectangleoperator+(Rectangle&);
};
#include"rect.h"
#include
usingnamespacestd;
intRectangle:
:
Counter=0;
Rectangle:
:
Rectangle(intl,intt,intr,intb){
left=l;
top=t;
right=r;
bottom=b;
}
voidRectangle:
:
Assign(intl,intt,intr,intb){
left=l;
top=t;
right=r;
bottom=b;
}
voidRectangle:
:
Show(){
cout<<"left-toppointis("<cout<<"right-bottompointis("<}
RectangleRectangle:
:
operator+=(Rectangle&rect){
intx=rect.right-rect.left;
inty=rect.bottom-rect.top;
right+=x;
bottom+=y;
returnRectangle(left,top,right,bottom);
}
RectangleRectangle:
:
operator-=(Rectangle&rect){
intx=rect.right-rect.left;
inty=rect.bottom-rect.top;
right-=x;
bottom-=y;
returnRectangle(left,top,right,bottom);
}
RectangleRectangle:
:
operator-(Rectangle&rect){
intx=rect.right-rect.left;
inty=rect.bottom-rect.top;
right-=x;
bottom-=y;
returnRectangle(left,top,right,bottom);
}
RectangleRectangle:
:
operator+(Rectangle&rect){
intx=rect.right-rect.left;
inty=rect.bottom-rect.top;
right+=x;
bottom+=y;
returnRectangle(left,top,right,bottom);
}
#include
#include"rect.h"
usingnamespacestd;
intmain(){
Rectanglerect;
cout<<"初始rect:
"<rect.Show();
rect.Assign(100,200,300,400);
cout<<"赋值后rect:
"<rect.Show();
Rectanglerect1(0,0,200,200);
cout<<"初始rect1:
"<rect1.Show();
rect+=rect1;
cout<<"与rect相加后的rect:
"<rect.Show();
rect-=rect1;
cout<<"减去rect1后的rect:
"<rect.Show();
Rectanglerect2;
rect2=rect+rect1;
cout<<"rect与rect1相加所得的rect2:
"<rect2.Show();
rect2=rect-rect1;
cout<<"rect减去rect1所得的rect2:
"<rect2.Show();
return0;
}
3。
#include
#include
usingnamespacestd;
classComplex{
doubleReal,Image;
public:
Complex(doubler=0.0,doublei=0.0){Real=r;Image=i;}
Complex(Complex&com){Real=com.Real;Image=com.Image;
}
voidPrint(){
cout<<"Real="<}
Complexoperator-(Complex);
Complexoperator-=(Complex);
Complexoperator*=(Complex);
Complexoperator/=(Complex);
};
ComplexComplex:
:
operator-(Complexc){
Complextemp(Real-c.Real,Image-c.Image);
returntemp;
}
ComplexComplex:
:
operator-=(Complexc){
Complextemp;
temp.Real=Real-c.Real;
temp.Image=Image-c.Image;
Real=temp.Real;
Image=temp.Image;
returntemp;
}
ComplexComplex:
:
operator*=(Complexc){
Complextemp;
temp.Real=Real*c.Real;
temp.Image=Image*c.Image;
Real=temp.Real;
Image=temp.Image;
returntemp;
}
ComplexComplex:
:
operator/=(Complexc){
Complextemp;
temp.Real=Real/c.Real;
temp.Image=Image/c.Image;
Real=temp.Real;
Image=temp.Image;
returntemp;
}
intmain(void){
Complexc1(1.0,1.0),c2(2.0,2.0),c3(4.0,4.0),c;
c1.Print();
c=c2-c3;c.Print();
c-=c1;c.Print();
c*=c1;c.Print();
c/=c1;c.Print();
return0;
}
#include
usingnamespacestd;
classComplex{
doubleReal,Image;
public:
Complex(doubler=0.0,doublei=0.0){Real=r;Image=i;}
Complex(Complex&com){Real=com.Real;Image=com.Image;
}
voidPrint(){
cout<<"Real="<}
friendComplexoperator-(constComplex&,constComplex&);
friendComplex&operator-=(Complex&,constComplex&);
friendComplex&operator*=(Complex&,constComplex&);
friendComplex&operator/=(Complex&,constComplex&);
};
Complexoperator-(constComplex&c1,constComplex&c2){
returnComplex(c1.Real-c2.Real,c1.Image-c2.Image);
}
Complex&operator-=(Complex&c1,constComplex&c2){
c1.Real=c1.Real-c2.Real;
c1.Image=c1.Image-c2.Image;
returnc1;
}
ComplexComplex:
:
operator*=(Complexc){
Complextemp;
temp.Real=Real*c.Real;
temp.Image=Image*c.Image;
Real=temp.Real;
Image=temp.Image;
returntemp;
}
ComplexComplex:
:
operator/=(Complexc){
Complextemp;
temp.Real=Real/c.Real;
temp.Image=Image/c.Image;
Real=temp.Real;
Image=temp.Image;
returntemp;
}
intmain(void){
Complexc1(1.0,1.0),c2(2.0,2.0),c3(4.0,4.0),c;
c1.Print();
c=c2-c3;c.Print();
c-=c1;c.Print();
c*=c1;c.Print();
c/=c1;c.Print();
return0;
}