date Birth;
char HomeAdd[20]; public: Person(){ ID[0]=Name[0]=Sex[0]=HomeAdd[0]=0; };
}
Person(char id[],char name[],char sex[],date birth,char homeadd[]){ strcpy(ID,id); }
strcpy(Name,name); strcpy(Sex,sex); Birth=birth;
strcpy(HomeAdd,homeadd); Birth.year=Birth.month=Birth.day=0;
Person(Person& p){ strcpy(ID,p.ID); }
void setID(char id[]){ strcpy(ID,id); }
void setName(char name[]){ }
strcpy(Name,name); strcpy(Name,p.Name); strcpy(Sex,p.Sex); Birth=p.Birth;
strcpy(HomeAdd,p.HomeAdd);
void setSex(char sex[]){ strcpy(Sex,sex); }
void setBirth(date birth){ Birth=birth; }
void setHome(char homeadd[]){ } }
strcpy(HomeAdd,homeadd);
void print(){
cout<<\
cout<<\cout< int main(){ date birth; birth.year =1991; birth.month =6; birth.day =12; Person p1(\陈建华\男\中吴大道1801号\p1.print (); Person p2; p2.print (); return 0 ; } 5.5设计如下类: 1)建立一个Point类,表示平面中的一个点;建立一个Line类,表示平面中的一条线端,内含两个Point类的对象;建立Triangle类,表示一个三角形,内含三个Line类的对象构成一个三角形。 2)设计三个类的相应的构造函数、复制构造函数,完成初始化和对象复制 3)设计Triangle类的成员函数完成三条边是否能构成三角形的检验和三角形面积计算,面积显示。 #include const double PI=3.1415; using namespace std; class Point{ double X,Y; public: Point(double x=0,double y=0){ X=x;Y=y; } Point(Point& p){ X=p.X ; Y=p.Y ; } double getx(){return X;} double gety(){return Y;} }; class Line{ Point pstart,pend; double length; Line(Point p1,Point p2):pstart(p1),pend(p2){ setl(); } Line(Line& l):pstart(l.pstart),pend(l.pend){ public: }; setl(); } double getl(){return length;} void setl(){ double deltax,deltay; } deltax=pstart.getx()-pend.getx(); deltay=pstart.gety()-pend.gety(); length=sqrt(deltax*deltax+deltay*deltay); class Trangle{ Line lfirst,lsecond,lthird; double area; public: Trangle(Line lf,Line ls,Line lt):lfirst(lf),lsecond(ls),lthird(lt){ area=0; } bool check(){ double l1,l2,l3; l1=lfirst.getl(); l2=lsecond.getl(); l3=lthird.getl(); return l1 void calarea(){ if (check()){ double s; } double l1,l2,l3; l1=lfirst.getl(); l2=lsecond.getl(); l3=lthird.getl(); s=(l1+l2+l3)/2.0; area=sqrt(s*(s-l1)*(s-l2)*(s-l3)); } void print(){ cout<<\ } }; int main(){ Point p1,p2(4,0),p3(0,3); Line l1(p1,p2),l2(p1,p3),l3(p2,p3); Trangle t(l1,l2,l3); if(t.check ())t.calarea(); t.print(); return 0; } 5.6建立一个分数类Fraction。分数类的数据成员包括分子和分母。成员函数包括构造函数、复制构造函数。构造函数要对初始化数据进行必要的检查(分母不能为0)。将分数显示成 “a/b”形式的输出函数。成员函数包括约分、通分、加、减、乘、除、求倒数、比较大小、显示和输入。完成以上所有成员函数并在主函数中进行检验。 #include Fraction::Fraction(int num,int deno){ Set(num, deno); } Fraction::Fraction(Fraction& f){ numerator=f.numerator; denominator=f.denominator; int numerator,denominator; int common_divisor(); void contracted(); Fraction(int=0,int=1); Fraction(Fraction&); Fraction Add(Fraction); Fraction Sub(Fraction); Fraction Mul(Fraction); Fraction Div(Fraction); bool operator>=(Fraction); bool operator<=(Fraction); bool operator==(Fraction); bool operator<(Fraction f){return !(operator>=(f));} bool operator>(Fraction f){return !(operator<=(f));} bool operator!=(Fraction f){return !(operator==(f));} Fraction Updown(); void Set(int=0,int=1); void disp(){cout<<\ //计算最大公约数 //分数化简 public: } Fraction Fraction::Add(Fraction f){ Fraction Temp(numerator*f.denominator+f.numerator*denominator,denominator*f.denominator); Temp.contracted(); return Temp; } Fraction Fraction::Sub(Fraction f){ Fraction Temp(numerator*f.denominator-f.numerator*denominator,denominator*f.denominator); Temp.contracted(); return Temp; } Fraction Fraction::Mul(Fraction f){ Fraction Temp(numerator*f.numerator,denominator*f.denominator); Temp.contracted(); return Temp; } Fraction Fraction::Div(Fraction f){ Fraction Temp(f.denominator,f.numerator ); Temp=Mul(Temp); Temp.contracted(); return Temp; } int Fraction::common_divisor(){ int residue; int dividend=numerator,divisor=denominator; while(residue=dividend%divisor){ dividend=divisor; divisor=residue; } return divisor; } void Fraction::contracted() { int residue=common_divisor(); numerator/=residue; denominator/=residue; if(denominator<0){numerator*=-1;denominator*=-1;} } bool Fraction::operator>=(Fraction f){ Fraction Temp=Sub(f); return (Temp.numerator >=0); } bool Fraction::operator<=(Fraction f){ Fraction Temp=Sub(f); } Fraction Fraction::Updown(){ int p; Fraction Temp; if (numerator!=0){ } return Temp; p=numerator; numerator=denominator; denominator=p; Temp.numerator=numerator; Temp.denominator=denominator; return (Temp.numerator <=0);} Fraction Temp=Sub(f); return (Temp.numerator ==0); bool Fraction::operator==(Fraction f){ } void Fraction::Set(int num,int deno){ if(deno!=0){ numerator=num;denominator=deno; contracted(); }} void main(){ Fraction f1(1,3),f2=2,f3,f4,f5(2,8),f6,f7(8,3),f8(8,3),f9(1,4); f4=f1.Add(f2); f4.disp(); f6=f2.Div(f5).Div(f7); f6.disp(); f5.disp(); f6=f1.Sub(f2); f6.disp(); f9.Set(5,3); f9.disp(); f9.Updown(); f9.disp(); cout<<(f7==f8)< cout<<(f7==f1)<