第六章作业
2015-05-30 12:44
274 查看
【6.12】要求:
(1)建立基类area_cl的两个派生类rectangle与isosceles,让每一个派生类都包含一个函数area(),分别用来返回矩形与三角形的面积。用构造函数对height与width进行初始化。
(2)写出主程序,用来求height与width分别为10.0与5.0的矩形面积,以及求height与width分别为4.0与6.0的三角形面积。
(3)要求通过使用基类指针访问虚函数的方法(运行时的多态)分别求出矩形和三角形的面积。
#include <iostream>
using namespace std;
class Area_cl {
protected:
double height;
double width;
public:
Area_cl(double r, double s)
{
height = r;
width = s;
}
virtual double area() = 0;
};
class Rectangle :public Area_cl {
public:
Rectangle(double r, double s) :Area_cl(r, s)
{};
double area()
{
cout << "矩形的面积为:" << height*width << endl;
return 0;
}
};
class Isosceles :public Area_cl {
public:
Isosceles(double r, double s) :Area_cl(r, s)
{};
double area()
{
cout << "三角形的面积为:" << (height*width) / 2 << endl;
return 0;
}
};
int main()
{
Area_cl *p;
Rectangle t(10.0, 5.0);
Isosceles i(4.0, 6.0);
p = &t;
p->area();
p = &i;
p->area();
system("pause");
return 0;
}
【6.13】定义基类Base,其数据成员为高h,定义成员函数disp为虚函数。然后再由Base派生出长方体类Cuboid与圆柱类Cylinder。并在两个派生类中定义成员函数disp为虚函数。在主函数中,用基类Base定义指针变量pc,然后用指针pc动态调用基类与派生类中虚函数disp,显示长方体与圆柱体的体积。
#include<iostream>
using namespace std;
class Base {
public:
Base(double h1)
{
h = h1;
}
virtual void disp()
{}
protected:
double h;
};
class Cuboid :public Base{ //声明长方体类
public:
Cuboid(double h1, double l, double w) :Base(h1)
{
l_ = l;
w_ = w;
}
virtual void disp()
{
cout << "Cuboid的体积为:" ;
cout << h*l_*w_ << endl;
}
protected:
double l_; //定义长;
double w_; //定义宽;
};
class Cylinder :public Base { //声明圆柱类
public:
Cylinder(double h1, double r) :Base(h1)
{
r_ = r;
}
virtual void disp()
{
cout << "Cylinder的体积为:";
cout << PI*r_*r_*h << endl;
}
protected:
double r_; //定义半径
const double PI = 3.1415926;
};
int main()
{
Base *pc; //定义基类指针
Cuboid cu(2.0,3.0,4.0); Cylinder cy(2.0,3.0);
pc = &cu;
pc->disp();
pc = &cy;
pc->disp();
system("pause");
return 0;
}
#include <iostream>
using namespace std;
class Area_cl {
protected:
double height;
double width;
public:
Area_cl(double r, double s)
{
height = r;
width = s;
}
virtual double area() = 0;
};
class Rectangle :public Area_cl {
public:
Rectangle(double r, double s) :Area_cl(r, s)
{};
double area()
{
cout << "矩形的面积为:" << height*width << endl;
return 0;
}
};
class Isosceles :public Area_cl {
public:
Isosceles(double r, double s) :Area_cl(r, s)
{};
double area()
{
cout << "三角形的面积为:" << (height*width) / 2 << endl;
return 0;
}
};
int main()
{
Area_cl *p;
Rectangle t(10.0, 5.0);
Isosceles i(4.0, 6.0);
p = &t;
p->area();
p = &i;
p->area();
system("pause");
return 0;
}
给出下面的抽象基类container:
class Container {
protected:
double radius;
public:
Container(double radius1)
{
radius = radius1;
}
virtual double surface_area() = 0; //纯虚函数
virtual double volume() = 0; //纯虚函数
};
要求建立3个继承container的派生类cube、sphere、与cylinder,让每个派生类都包含虚函数surface_area()和double volume(),分别用来计算正方体、球体和圆柱体的表面积及体积。要求写出主程序,应用C++的多态性,分别计算边长为6.0的正方体、半径为5.0的球体,以及半径为5.0和高为6.0的圆柱体的表面积和体积。
#include<iostream>
using namespace std;
class Container {
protected:
double radius;
public:
Container(double radius1)
{
radius = radius1;
};
virtual double surface_area() = 0;
virtual double volume() = 0;
};
class Cube:public Container{
public:
Cube(double radius1) :Container(radius1)
{}
virtual double surface_area()
{
cout << "Cube的表面积: " << 6 * radius*radius << endl;
return 0;
}
virtual double volume()
{
cout << "Cube的体积: " << radius*radius*radius << endl;
cout << endl;
return 0;
}
};
class Sphere :public Container {
public:
Sphere(double radius1) :Container(radius1)
{}
const double PI = 3.1415926;
virtual double surface_area()
{
cout << "Sphere的表面积: " << 4 * PI*radius*radius << endl;
return 0;
}
virtual double volume()
{
cout << "Sphere的体积: " << (4 * PI * radius*radius*radius) / 3 << endl;
cout << endl;
return 0;
}
};
class Cylinder :public Container {
public:
Cylinder(double radius1, double h) :Container(radius1)
{
h_ = h;
}
const double PI = 3.1415926;
virtual double surface_area()
{
cout << "Cylinder的表面积: " << (2 * PI*radius*radius) + (PI * 2 * radius * h_) << endl;
return 0;
}
virtual double volume()
{
cout << "Cylinder的体积: " << PI*radius*radius*h_ << endl;
cout << endl;
return 0;
}
private:
double h_;
};
int main()
{
Container* pc;
Cube cu(6.0); Sphere sp(5.0);Cylinder cy(5.0, 6.0);
pc = &cu;
pc->surface_area(); pc->volume();
pc = &sp;
pc->surface_area(); pc->volume();
pc = &cy;
pc->surface_area(); pc->volume();
system("pause");
return 0;
}
(1)建立基类area_cl的两个派生类rectangle与isosceles,让每一个派生类都包含一个函数area(),分别用来返回矩形与三角形的面积。用构造函数对height与width进行初始化。
(2)写出主程序,用来求height与width分别为10.0与5.0的矩形面积,以及求height与width分别为4.0与6.0的三角形面积。
(3)要求通过使用基类指针访问虚函数的方法(运行时的多态)分别求出矩形和三角形的面积。
#include <iostream>
using namespace std;
class Area_cl {
protected:
double height;
double width;
public:
Area_cl(double r, double s)
{
height = r;
width = s;
}
virtual double area() = 0;
};
class Rectangle :public Area_cl {
public:
Rectangle(double r, double s) :Area_cl(r, s)
{};
double area()
{
cout << "矩形的面积为:" << height*width << endl;
return 0;
}
};
class Isosceles :public Area_cl {
public:
Isosceles(double r, double s) :Area_cl(r, s)
{};
double area()
{
cout << "三角形的面积为:" << (height*width) / 2 << endl;
return 0;
}
};
int main()
{
Area_cl *p;
Rectangle t(10.0, 5.0);
Isosceles i(4.0, 6.0);
p = &t;
p->area();
p = &i;
p->area();
system("pause");
return 0;
}
【6.13】定义基类Base,其数据成员为高h,定义成员函数disp为虚函数。然后再由Base派生出长方体类Cuboid与圆柱类Cylinder。并在两个派生类中定义成员函数disp为虚函数。在主函数中,用基类Base定义指针变量pc,然后用指针pc动态调用基类与派生类中虚函数disp,显示长方体与圆柱体的体积。
#include<iostream>
using namespace std;
class Base {
public:
Base(double h1)
{
h = h1;
}
virtual void disp()
{}
protected:
double h;
};
class Cuboid :public Base{ //声明长方体类
public:
Cuboid(double h1, double l, double w) :Base(h1)
{
l_ = l;
w_ = w;
}
virtual void disp()
{
cout << "Cuboid的体积为:" ;
cout << h*l_*w_ << endl;
}
protected:
double l_; //定义长;
double w_; //定义宽;
};
class Cylinder :public Base { //声明圆柱类
public:
Cylinder(double h1, double r) :Base(h1)
{
r_ = r;
}
virtual void disp()
{
cout << "Cylinder的体积为:";
cout << PI*r_*r_*h << endl;
}
protected:
double r_; //定义半径
const double PI = 3.1415926;
};
int main()
{
Base *pc; //定义基类指针
Cuboid cu(2.0,3.0,4.0); Cylinder cy(2.0,3.0);
pc = &cu;
pc->disp();
pc = &cy;
pc->disp();
system("pause");
return 0;
}
#include <iostream>
using namespace std;
class Area_cl {
protected:
double height;
double width;
public:
Area_cl(double r, double s)
{
height = r;
width = s;
}
virtual double area() = 0;
};
class Rectangle :public Area_cl {
public:
Rectangle(double r, double s) :Area_cl(r, s)
{};
double area()
{
cout << "矩形的面积为:" << height*width << endl;
return 0;
}
};
class Isosceles :public Area_cl {
public:
Isosceles(double r, double s) :Area_cl(r, s)
{};
double area()
{
cout << "三角形的面积为:" << (height*width) / 2 << endl;
return 0;
}
};
int main()
{
Area_cl *p;
Rectangle t(10.0, 5.0);
Isosceles i(4.0, 6.0);
p = &t;
p->area();
p = &i;
p->area();
system("pause");
return 0;
}
给出下面的抽象基类container:
class Container {
protected:
double radius;
public:
Container(double radius1)
{
radius = radius1;
}
virtual double surface_area() = 0; //纯虚函数
virtual double volume() = 0; //纯虚函数
};
要求建立3个继承container的派生类cube、sphere、与cylinder,让每个派生类都包含虚函数surface_area()和double volume(),分别用来计算正方体、球体和圆柱体的表面积及体积。要求写出主程序,应用C++的多态性,分别计算边长为6.0的正方体、半径为5.0的球体,以及半径为5.0和高为6.0的圆柱体的表面积和体积。
#include<iostream>
using namespace std;
class Container {
protected:
double radius;
public:
Container(double radius1)
{
radius = radius1;
};
virtual double surface_area() = 0;
virtual double volume() = 0;
};
class Cube:public Container{
public:
Cube(double radius1) :Container(radius1)
{}
virtual double surface_area()
{
cout << "Cube的表面积: " << 6 * radius*radius << endl;
return 0;
}
virtual double volume()
{
cout << "Cube的体积: " << radius*radius*radius << endl;
cout << endl;
return 0;
}
};
class Sphere :public Container {
public:
Sphere(double radius1) :Container(radius1)
{}
const double PI = 3.1415926;
virtual double surface_area()
{
cout << "Sphere的表面积: " << 4 * PI*radius*radius << endl;
return 0;
}
virtual double volume()
{
cout << "Sphere的体积: " << (4 * PI * radius*radius*radius) / 3 << endl;
cout << endl;
return 0;
}
};
class Cylinder :public Container {
public:
Cylinder(double radius1, double h) :Container(radius1)
{
h_ = h;
}
const double PI = 3.1415926;
virtual double surface_area()
{
cout << "Cylinder的表面积: " << (2 * PI*radius*radius) + (PI * 2 * radius * h_) << endl;
return 0;
}
virtual double volume()
{
cout << "Cylinder的体积: " << PI*radius*radius*h_ << endl;
cout << endl;
return 0;
}
private:
double h_;
};
int main()
{
Container* pc;
Cube cu(6.0); Sphere sp(5.0);Cylinder cy(5.0, 6.0);
pc = &cu;
pc->surface_area(); pc->volume();
pc = &sp;
pc->surface_area(); pc->volume();
pc = &cy;
pc->surface_area(); pc->volume();
system("pause");
return 0;
}
相关文章推荐
- 获取系统时间
- POJ1321---棋盘问题
- IOS valueForKeyPath
- 什么是创客?!
- 结构体变量的引用与初始化(例题)
- Java内部类
- Android 实现全屏显示
- Services 翻译第五集
- linux 查看文件夹大小 du -sh
- python实现比较两段文本不同之处的方法
- Linux初学者应该知道的12个命令
- iOS开发UI基础—09UIImageView动画示例之汤姆猫程序
- PowerDesigner12.5 常用功能设置
- am,pm时间转换
- iOS开发UI基础—08应用程序管理之xib的简单使用
- [CODEVS 1043] Noip 2000 方格取数
- 数据库灾难性环境下恢复
- 赠友(精忠报国)
- 创建工程
- 简单的菜单