第十周实验报告(3)
2012-04-25 12:23
316 查看
/* 程序头部注释开始
* 程序的版权和版本声明部分
* Copyright (c) 2012, 烟台大学计算机学院学生
* Copyright (c) 2012, 烟台大学计算机学院学生
* All rights reserved.
* 文件名称:
* 作 者: 李瑞
* 完成日期: 2012 年 4月25 日
* 版 本 号: v1.0
* 对任务及求解方法的描述部分
* 输入描述:……
* 问题描述:……
* 程序输出:……
* 程序头部的注释结束*/
结果:
* 程序的版权和版本声明部分
* Copyright (c) 2012, 烟台大学计算机学院学生
* Copyright (c) 2012, 烟台大学计算机学院学生
* All rights reserved.
* 文件名称:
* 作 者: 李瑞
* 完成日期: 2012 年 4月25 日
* 版 本 号: v1.0
* 对任务及求解方法的描述部分
* 输入描述:……
* 问题描述:……
* 程序输出:……
* 程序头部的注释结束*/
/*【任务3】 (1)先建立一个Point(点)类,包含数据成员x,y(坐标点); (2)以Point为基类,派生出一个Circle(圆)类,增加数据成员 (半径); (3)再以Circle类为直接基类,派生出一个Cylinder(圆柱体)类,再增加数据成员h(高)。 要求编写程序,设计出各类中基本的成员函数(包括构造函数、析构函数、修改数据成员和获取数据成员的公共接口、用于输出的重载运算符“<<”函数等), 使之能用于处理以上类对象,最后求出圆格柱体的表面积、体积并输出。 (提示:此任务可以分为三个子任务分成若干步骤进行。先声明基类,再声明派生类,逐级进行,分步调试。——这种方法适用于做任何的项目) (1)第1个程序: 基类Point类及用于测试的main()函数 (2)第2个程序:声明Point类的派生类Circle及其测试的main()函数 (3)第3个程序:声明Circle的派生类Cylinder及测试的main()函数*/ #include<iostream> #include<Cmath> #include<iomanip> #define PI 3.1415926535898 using namespace std; class Point //定义坐标点类 { public: Point(){x = 0;y = 0;} Point(double x0,double y0) {x = x0; y = y0;} ~Point(){} double getx(){return x;} double gety(){return y;} friend ostream &operator << (ostream & input, Point & c); protected: double x, y; //点的横坐标和纵坐标 }; ostream &operator << (ostream & out, Point & c) { out << "点:(" << c.x << "," << c.y << ")"; return out; } class Circle: public Point { public: Circle(){radii = 0;} Circle(double x0, double y0, double r); //构造函数 ~Circle(){}; double getr(){return radii;} friend ostream &operator << (ostream & out, Circle & c); protected: double radii; }; Circle::Circle(double x0, double y0, double r):Point(x0, y0),radii(r){} ostream &operator << (ostream & out, Circle & c) { out << "(" << c.getx() << "," << c.gety() << ")" << "为圆心" << c.radii << "为半径的圆"; return out; } class Cylinder: public Circle { public: Cylinder(){height = 0;} Cylinder(double x1,double y1, double r1, double h); ~Cylinder(){} double geth(){return height;} double area(); double volume(); friend ostream &operator << (ostream & out, Cylinder & c); private: double height; }; Cylinder::Cylinder(double x1,double y1, double r1, double h):Circle(x1, y1, r1), height(h){} double Cylinder::area() { double c_area = PI * getr() * getr(); double c_cir = 2 * PI * getr() * height; return (c_cir + c_area); } double Cylinder::volume() { return (PI * getr() * getr() * height); } ostream &operator << (ostream & out, Cylinder & c) { out << "(" << c.getx() << "," << c.gety() << ")" << "为圆心" << c.radii << "为半径" << c.height << "为高的圆柱体"; return out; } int main() { Cylinder cy(1, 1, 1, 1); cout << cy << endl; cout << setiosflags(ios::fixed) << setprecision(2); cout << "表面积是:" << cy.area() << endl; cout << "体积是:" << cy.volume() << endl; system("pause"); return 0; }
结果: