程序题.写一个C++程序,定义抽象基类Shape,由它派生出一个基类Point,再由Point派生出2个派生类
程序题.写一个C++程序,定义抽象基类Shape,由它派生出一个基类Point,再由Point派生出2个派生类:Circle(圆形),Rectangle(矩形),用一个函...
程序题.写一个C++程序,定义抽象基类Shape,由它派生出一个基类Point,再由Point派生出2个派生类:Circle(圆形),Rectangle(矩形),用一个函数Area分别输出以上二者的面积,2个图形的数据在定义对象时给定。并要求用+运算符对矩形长度,宽度重载,得到两个矩形的长度和与宽度和。
急求完整代码 展开
急求完整代码 展开
2个回答
展开全部
#include<iostream.h>
#include<cmath>
const double pi=3.14;
class Shape//抽象基类
{
public:
virtual void display()=0;
};
class Point:public Shape
{
public:
void display(){};
};
class Circle:public Point
{
private:
double r;
public:
void set(double r)
{ r=r;}
double area(double r)
{
return pi*r*r;
}
void display()
{
cout<<"圆的面积是:"<<area(r)<<endl;
}
};
class Tectangle:public Point
{
private:
double temp[2];
double length;
double width;
public:
void display();
double area(double l,double w)
{
return l*w;
}
void set(double l=0,double r=0)
{ temp[0]=length=l;
temp[1]=width=r;}
Tectangle operator+(const Tectangle &other);//函数重载
void calculate();//输出两个矩形的长度和与宽度
};
void Tectangle::calculate()
{
for(int i=0;i<2;i++)
cout<<temp[i]<<"\t";
}
void Tectangle::display()
{
cout<<"矩形面积:"<<area(length,width)<<endl;
}
Tectangle Tectangle::operator+(const Tectangle &other)
{
Tectangle tect;
tect.temp[0]=temp[0]+other.temp[0];
tect.temp[1]=temp[1]+other.temp[1];
return tect;
}
void main()
{
double r,length,width;
Circle cir;
Tectangle tect1,tect2,tect3;
cout<<"请输入圆形半径r:"<<endl;
cin>>r;
cir.set(r);
cir.display();
cout<<"请输入1矩形长、宽:"<<endl;
cin>>length>>width;
tect1.set(length,width);
tect1.display();
cout<<"请输入2矩形长、宽:"<<endl;
cin>>length>>width;
tect2.set(length,width);
tect2.display();
tect3=tect1+tect2;
cout<<"两个矩形的长度和与宽度和分别是:"<<endl;
tect3.calculate();
}
写好了,希望符合你的要求
#include<cmath>
const double pi=3.14;
class Shape//抽象基类
{
public:
virtual void display()=0;
};
class Point:public Shape
{
public:
void display(){};
};
class Circle:public Point
{
private:
double r;
public:
void set(double r)
{ r=r;}
double area(double r)
{
return pi*r*r;
}
void display()
{
cout<<"圆的面积是:"<<area(r)<<endl;
}
};
class Tectangle:public Point
{
private:
double temp[2];
double length;
double width;
public:
void display();
double area(double l,double w)
{
return l*w;
}
void set(double l=0,double r=0)
{ temp[0]=length=l;
temp[1]=width=r;}
Tectangle operator+(const Tectangle &other);//函数重载
void calculate();//输出两个矩形的长度和与宽度
};
void Tectangle::calculate()
{
for(int i=0;i<2;i++)
cout<<temp[i]<<"\t";
}
void Tectangle::display()
{
cout<<"矩形面积:"<<area(length,width)<<endl;
}
Tectangle Tectangle::operator+(const Tectangle &other)
{
Tectangle tect;
tect.temp[0]=temp[0]+other.temp[0];
tect.temp[1]=temp[1]+other.temp[1];
return tect;
}
void main()
{
double r,length,width;
Circle cir;
Tectangle tect1,tect2,tect3;
cout<<"请输入圆形半径r:"<<endl;
cin>>r;
cir.set(r);
cir.display();
cout<<"请输入1矩形长、宽:"<<endl;
cin>>length>>width;
tect1.set(length,width);
tect1.display();
cout<<"请输入2矩形长、宽:"<<endl;
cin>>length>>width;
tect2.set(length,width);
tect2.display();
tect3=tect1+tect2;
cout<<"两个矩形的长度和与宽度和分别是:"<<endl;
tect3.calculate();
}
写好了,希望符合你的要求
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
貌似要花些时间写 很急吗?
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询