资源简介
清华大学出版社,龚晓庆付丽娜等编写的《C++面向对象程序设计》第二版,课后编程题参考答案。
代码片段和文件信息
/*
* ex10_3.cpp
*
* 3.利用抽象类和虚函数改写第9 章习题中的Shape 类层次。
* 再编写一个totalArea()函数计算任意两个形状的面积之和。
*
*/
#include
#include
#include
using namespace std;
//-----------------------------------------
class Shape
{
public:
virtual double area()const = 0;
virtual double perimeter()const = 0;
virtual void scale(double factor) = 0;
};
//-----------------------------------------
class Triangle : public Shape
{
public:
Triangle(double a=1 double b=1 double c=1);
double area()const;
double perimeter()const;
void scale(double factor);
double getA(){return a;}
double getB(){return b;}
double getC(){return c;}
//others......
private:
double a b c;
static bool validate(double a double b double c);
};
Triangle::Triangle(double x double y double z)
{
bool v = validate(xyz);
assert(v);
a=x; b=y; c=z;
}
double Triangle::area()const
{
double p = (a+b+c)/2;
double s = p*(p-a)*(p-b)*(p-c);
return sqrt(s);
}
double Triangle::perimeter()const
{
return a+b+c;
}
//others......
void Triangle::scale(double factor){
assert(factor>0);
a *= factor;
b *= factor;
c *= factor;
}
bool Triangle::validate(double a double b double c)
{
if((a<=0) || (b<=0) || (c<=0))
return false;
if((a+b<=c) || (a+c<=b) || (b+c<=a))
return false;
return true;
}
//----------------------------------
class Rectangle:public Shape
{
public:
Rectangle(double w=1.0double h=1.0);
double area()const;
double perimeter()const;
void scale(double f);
double width(){return _width;}
double height(){return _height;}
private:
double _height;
double _width;
};
Rectangle::Rectangle(double wdouble h)
{ assert(w>0);
assert(h>0);
_width = w;
_height = h;
}
double Rectangle::area()const
{
return _height*_width;
}
double Rectangle::perimeter()const
{
return 2*(_height+_width);
}
void Rectangle::scale(double f)
{
assert(f > 0);
_height *= f;
_width *= f;
}
//------------------------------
class Circle : public Shape
{
public:
Circle(double r = 1.0);
double area()const;
double perimeter()const;
void scale(double factor);
double getRadius(){return radius;}
private:
double radius;
};
const double pi=3.1415926;
Circle::Circle(double r)
{
assert(r>0);
radius = r;
}
double Circle::area()const
{
return pi*radius*radius;
}
double Circle::perimeter()const
{
return pi*radius*2;
}
void Circle::scale(double f)
{
assert(f>0);
radius *= f;
}
//------------------------------------
double totalArea(Shape& s1 Shape& s2)
{
return s1.area()+s2.area();
}
//-------------------------
int main()
{
Rectangle r(53);
cout<<“Rectangle r:\t“<<“width: “< <<“\theight:“< cout<<“area=“< Circle c(4);
cout<<“Circle c:\t“<<“radius: “< cout<<“area=“< Triangle t(534);
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2018-07-24 20:35 excercise\
文件 1848 2017-02-06 19:06 excercise\ch11\ex11_6\array.h
文件 371 2017-02-06 16:16 excercise\ch10\ex10_4\basket.cpp
文件 287 2017-02-06 16:16 excercise\ch10\ex10_4\basket.h
文件 604 2017-02-06 16:26 excercise\ch10\ex10_2\cart.h
文件 423 2017-02-06 19:00 excercise\ch11\ex11_4\client.cpp
文件 486 2017-02-06 19:04 excercise\ch11\ex11_5\client.cpp
文件 542 2017-02-06 19:10 excercise\ch12\ex12_3\client.cpp
文件 54 2016-09-02 18:47 excercise\ch4\data.txt
文件 1833 2017-02-06 19:08 excercise\ch11\ex11_sikaoti3\deList.h
文件 1277 2017-02-06 19:08 excercise\ch11\ex11_sikaoti3\delistfunc.h
文件 264 2016-07-28 14:52 excercise\ch2\ex2_5.cpp
文件 490 2016-07-28 14:58 excercise\ch2\ex2_6.cpp
文件 461 2016-07-28 14:52 excercise\ch2\ex2_7.cpp
文件 271 2016-07-28 15:01 excercise\ch2\ex2_8.cpp
文件 442 2016-07-28 17:42 excercise\ch3\ex3_1.cpp
文件 595 2016-07-28 17:49 excercise\ch3\ex3_2.cpp
文件 606 2016-07-28 17:55 excercise\ch3\ex3_3.cpp
文件 1356 2016-07-28 18:13 excercise\ch3\ex3_4.cpp
文件 499 2016-07-28 18:21 excercise\ch3\ex3_5.cpp
文件 519 2016-07-28 18:28 excercise\ch3\ex3_6.cpp
文件 714 2016-07-28 18:38 excercise\ch3\ex3_7.cpp
文件 581 2016-07-28 18:44 excercise\ch3\ex3_8.cpp
文件 692 2016-07-28 18:52 excercise\ch3\ex3_9.cpp
文件 835 2016-07-28 19:41 excercise\ch3\ex3_10.cpp
文件 801 2016-07-28 19:49 excercise\ch3\ex3_11.cpp
文件 930 2016-07-28 20:01 excercise\ch3\ex3_12.cpp
文件 354 2016-07-28 19:09 excercise\ch3\ex3_13.cpp
文件 369 2016-07-28 19:21 excercise\ch3\ex3_14.cpp
文件 323 2016-07-28 19:11 excercise\ch3\ex3_15.cpp
文件 364 2016-07-28 19:12 excercise\ch3\ex3_16.cpp
............此处省略127个文件信息
相关资源
- _miaoking博文——企业人力资源管理系
- C++数据结构等价类实现
- 磁盘调度算法模拟软件,完整课程设
- Ogre嵌入MFC_DEMO
- 生产者消费者问题C++语言
- VS.net / VC++ 2003 2005(.sln)项目转化为
- C++ 访问DOM中文文档IHTML
- Gabor滤波器C++程序
- c++usb端口访问
- 课程设计学生宿舍管理系统C++
- C++控制Windows桌面切换
- C语言windowlinux平台的SNTP实现
- 在MFC应用程序中浏览PDF、Word文档文件
- vc++实现图像处理:中值滤波
- OS_页面置换算法实验c++程序代码
- MRF2图像分割vc++代码
- 吉林大学软件学院2011数据结构实验题
- 应用C/C++语言编写灰度图像霍夫曼编码
- 计算机图形学 中点画椭圆法 Bresenha
- 语音识别技术C++源代码
- 二叉树c++源代码实现查找,删除,插
- 傅里叶描述子的提取,并且提取手势
- C++中国象棋人机下棋 高智商版
- 编译C++需要的库文件win32 mak
- C++ Builder 2009 破解文件及序列号
- yaolog v1.5(很有特色的C++跨平台日志库
- VC++写的功能非常强大的自定义列表控
- 操作系统 课程设计 C++ 读者写着问题
- 操作系统 课程设计 C++ 模拟文件系统
- c++ http
评论
共有 条评论