C++第六章习题第一题
2015-06-16 20:03
323 查看
1.#include <iostream.h>
class Point
{
public:
Point(float x=0,float y=0);
void setPoint(float,float);
float getX() const
{return x;}
float getY() const
{return y;}
friend ostream & operator<<(ostream &output,Point &);
protected:
float x,y;
};
Point::Point(float a,float b)
{
x=a;y=b;
}
void Point::setPoint(float a,float b)
{
x=a;y=b;
}
ostream & operator<<(ostream &output,Point &p)
{
output<<"["<<p.x<<","<<p.y<<"]"<<endl;
return output;
}
class Circle:public Point
{
public:
Circle(float x,float y,float r):Point(x,y),radius(r){}
void setRadius(float r)
{radius=r;}
float getRadius() const
{return radius;}
double area() const
{
return 3.1415*radius*radius;
}
friend ostream & operator<<(ostream &output,Circle &);
protected:
float radius;
};
ostream & operator<<(ostream &output,Circle &c)
{
output<<"Center =["<<c.x<<","<<c.y<<"],r= "<<c.radius<<",area="<<c.area()<<endl;
return output;
}
class Cylinder:public Circle
{
public:
Cylinder(float x,float y,float r,float h):Circle(x,y,r),height(h){}
void setHeight(float h)
{height=h;}
float getHeight() const
{return height;}
double area() const
{
return 2*Circle::area()+2*3.1415*radius*height;
}
double volume() const
{
return 3.1415*radius*radius*height;
}
friend ostream & operator<<(ostream &output,Cylinder &);
protected:
float height;
};
ostream & operator<<(ostream &output,Cylinder &cy)
{
output<<"Center=["<<cy.x<<cy.y<<"],r="<<cy.radius<<",h="<<cy.height<<"\narea="<<cy.area()<<",volume="<<cy.volume()<<endl;
return output;
}
int main()
{
Cylinder cy1(3.5,6.4,5.2,10);
cout<<"original cylinder:\nx="<<cy1.getX()<<",y="<<cy1.getY()<<",r="<<cy1.getRadius()<<",h="<<cy1.getHeight()<<"\narea="<<cy1.area()<<",volume="<<cy1.volume()<<endl;
cy1.setHeight(15);
cy1.setRadius(7.5);
cy1.setPoint(5,5);
cout<<"\nnew cylinder:\n"<<cy1;
Point &pRef=cy1;
cout<<"\npRef as a point:"<<pRef;
Circle &cRef=cy1;
cout<<"\ncRef as a circle:"<<cRef;
return 0;
}
class Point
{
public:
Point(float x=0,float y=0);
void setPoint(float,float);
float getX() const
{return x;}
float getY() const
{return y;}
friend ostream & operator<<(ostream &output,Point &);
protected:
float x,y;
};
Point::Point(float a,float b)
{
x=a;y=b;
}
void Point::setPoint(float a,float b)
{
x=a;y=b;
}
ostream & operator<<(ostream &output,Point &p)
{
output<<"["<<p.x<<","<<p.y<<"]"<<endl;
return output;
}
class Circle:public Point
{
public:
Circle(float x,float y,float r):Point(x,y),radius(r){}
void setRadius(float r)
{radius=r;}
float getRadius() const
{return radius;}
double area() const
{
return 3.1415*radius*radius;
}
friend ostream & operator<<(ostream &output,Circle &);
protected:
float radius;
};
ostream & operator<<(ostream &output,Circle &c)
{
output<<"Center =["<<c.x<<","<<c.y<<"],r= "<<c.radius<<",area="<<c.area()<<endl;
return output;
}
class Cylinder:public Circle
{
public:
Cylinder(float x,float y,float r,float h):Circle(x,y,r),height(h){}
void setHeight(float h)
{height=h;}
float getHeight() const
{return height;}
double area() const
{
return 2*Circle::area()+2*3.1415*radius*height;
}
double volume() const
{
return 3.1415*radius*radius*height;
}
friend ostream & operator<<(ostream &output,Cylinder &);
protected:
float height;
};
ostream & operator<<(ostream &output,Cylinder &cy)
{
output<<"Center=["<<cy.x<<cy.y<<"],r="<<cy.radius<<",h="<<cy.height<<"\narea="<<cy.area()<<",volume="<<cy.volume()<<endl;
return output;
}
int main()
{
Cylinder cy1(3.5,6.4,5.2,10);
cout<<"original cylinder:\nx="<<cy1.getX()<<",y="<<cy1.getY()<<",r="<<cy1.getRadius()<<",h="<<cy1.getHeight()<<"\narea="<<cy1.area()<<",volume="<<cy1.volume()<<endl;
cy1.setHeight(15);
cy1.setRadius(7.5);
cy1.setPoint(5,5);
cout<<"\nnew cylinder:\n"<<cy1;
Point &pRef=cy1;
cout<<"\npRef as a point:"<<pRef;
Circle &cRef=cy1;
cout<<"\ncRef as a circle:"<<cRef;
return 0;
}
相关文章推荐
- 彻底搞定C语言指针详解完整版
- 浅析Scanf源码
- 基于LGPL开源项目 Log4cpp安装与使用
- XXTEA加密算法C++版
- C语言之链表详细操作及讲解
- Python调用C/C++的种种方法
- C++ const && define
- 链式队列C++实现
- 约瑟夫问题 C语言循环链表
- Leetcode Merge Sorted Array 关于算法效率的思考
- C++开发者都应该使用的10个C++11特性
- C++基数排序(清楚明了完美详细的实现)
- 为游戏多开做准备,降低游戏的CPU
- float的内存布局
- c++ Builder 死机解决方法
- C++类中:作用
- C++ 自定义控件的移植(将在其它程序中设计的自定义控件,移植到现在的系统中)
- C++程序中获取不带文件路径和后缀的文件名
- c++ builder GroupBox的使用方法,如何把控件拖到TGroupBox上面
- 研究生本科生的创建C++链表