首页 > 编程语言 >【C++】实验十三

【C++】实验十三

时间:2024-08-05 20:25:01浏览次数:11  
标签:Cylinder return Point 十三 double C++ 实验 Circle include

题目:

1、声明Point(点)类,由Point类派生出Circle(圆)类,再由Circle类派生出Cylinder(圆柱)类。将类的定义部分分别作为3个头文件。对它们的成员函数的声明部分分别作为3个源文件(.cpp文件),在主函数中用#include命令把它们包含进来。形成一个完整的程序,并上机运行。

2、教材第12章例12.3的基础上作以下修改。

*把构造函数修改为带参数的函数,在建立对象时初始化。

*先不要析构函数声明virtual,在main函数中另设一个指向Circle类对象的指针变量。使它指向gradl。运行程序,分析结果。

*不作第2点的修改而将析构函数声明为virtual,运行程序,分析结果。

3、声明抽象基类shape, 由它派生出3个派生类:Circle(圆形)、Rectangle(矩形)、Triangle(三角形),用一个函数printArea分别输出以上三者的面积,3个图形的数据在定义对象时给定。

参考代码:

1、

#ifndef _Circle_H//Circle.h
#define _Circle_H
#include<iostream.h>
class Circle:public Point{
protected:
    double radius;
public:
       Circle(double =0,double =0,double =0);
friend ostream & operator<<(ostream &,const Circle &);
    void setRadius(double);
    double getRadius()const;
    double area()const;
    };
#endif

#ifndef _Cylinder_H//Cylinder.h
#define _Cylinder_H
#include<iostream.h>
class Cylinder:public Circle{
 private:
    double height;
 public:
     Cylinder(double=0,double=0,double=0,double=0);
  void setHeight(double);
  double getHeight()const;
  double area()const;
  double volume()const;
  friend ostream & operator<<(ostream &,const Cylinder &);

};
#endif

#ifndef _Point_H//Point.h
#define _Point_H
#include<iostream.h>

class Point{
protected:
    double x;
    double y;
public:
    Point(double=0,double=0);
    void setPoint(double,double);
    double getX();
    double getY();
friend ostream & operator<<(ostream &,const Point &);

};
#endif

#include"Point.h"//Circle.cpp
#include"Circle.h"
#include<iostream.h>

Circle::Circle(double a ,double b ,double c ):Point(a,b){
    radius=c;
}

void Circle::setRadius(double a){
  radius = a;
}

double Circle::getRadius()const{
  return radius;
}

double Circle::area()const{
  return 3.14*radius*radius;
}

ostream &operator<<(ostream &output,const Circle &c){
    output<<c.area()<<endl; 

    return output;
}

#include"Point.h"//Cylinder.cpp
#include"Circle.h"
#include"Cylinder.h"
#include<iostream.h>


Cylinder::Cylinder(double a,double b,double c,double d):Circle(a,b,c){
 height = d;  
}

void Cylinder::setHeight(double a){
  height = a;

double Cylinder::getHeight ()const{
  return height;
}

double Cylinder::area()const{
    return 2*Circle::area()+height*2*3.14*radius;
}

double Cylinder::volume()const{
    return Circle::area() *height;
}

 ostream &operator<<(ostream & output,const Cylinder & cy){
  cout<< "修改x,y为[" << cy.x << "," << cy.y << "],r=" << cy.radius <<",h"<<cy.height << "\n" <<"表面积=" <<cy.area () << ",体积=" <<cy.volume () <<endl;
  return output;
}

#include"Point.h"//Point.cpp
#include<iostream.h>


Point::Point(double a,double b){
  x = a;
  y = b;
}

void Point::setPoint(double a,double b){
  x = a;
  y = b;
}

double Point::getX(){
  return x;
}

double Point::getY(){
  return y;
}

ostream & operator<<(ostream &output,const Point &p){
    output<<"["<<p.x<<","<<p.y<<"]"<<endl;
    return output;
}

#include"Point.h"//Main.cpp
#include"Circle.h"
#include"Cylinder.h"
#include<iostream.h>

int main(){
  Cylinder cy1(3.5,6.4,5.2,10);
  cout<< "圆柱:\nx=" << cy1.getX() << ",y=" << cy1.getY() << ",r=" << cy1.getRadius() << ",h=" << cy1.getHeight () << "\n" << "表面积=" << cy1.area() << ",体积=" << cy1.volume () << endl;
  cy1.setHeight (15);
  cy1.setRadius (7.5);
  cy1.setPoint(5,5);
  cout<<endl;
  cout<< "新圆柱:\n" <<cy1;
  Point &pRef = cy1;
  cout<< "\n"<<"x,y为" <<pRef;
  Circle &cRef = cy1;
  cout<< "\n"<<"圆的面积为" <<cRef;
  return 0;
}

2、

#include<iostream>
using namespace std;

class Point{
public:
    Point(){}
    virtual~Point(){
      cout<<"execyting Point destructor" <<endl;
    }
};

class Cricle:public Point{
public:
    Cricle(int = 0);
    virtual~Cricle(){
      cout<< "exceuting Circle destructor" << endl;
    }
private:
    int radus;
};

Cricle::Cricle(int a){
        radus = a;
    }

int main(){
  Point *p=new Cricle(33);
 // Cricle *c=new Cricle(33);  //第二小问
 // delete c;                  //第二小问
  delete p;
  return 0;
}

3、

#include<iostream>
using namespace std;

class shape{
public:
    virtual double area()=0;
    
};

class Circle:public shape{
public:
    Circle(double a){
      r=a;
    }
    virtual double area(){
      return r*r*3.14;
    }
protected:
    double r;
};

class Rectangle:public shape{
public:
    Rectangle(double a,double b){
      x=a;y=b;
    }
    virtual double area(){
      return x*y;
    }
protected:
  double x,y;
};

class Triangle:public shape{
public:
    Triangle(double a,double b){
      d=a;
      g=b;
    }
    virtual double area(){
      return d*g/2;
    }
protected:
    double d;
    double g;
};

 void printArea(Circle &c1,Rectangle &r1,Triangle &t1){
  cout<<"圆的面积:"<<c1.area()<<'\n'<<"矩形面积:"<<r1.area() <<'\n'<<"三角形面积:"<<t1.area ()<<endl;
}

int main(){
  void printArea(Circle &,Rectangle &,Triangle &);
    Circle c1(3.0);
  Rectangle r1(2.1,3.0);
  Triangle t1(2.2,3.3);
  printArea(c1,r1,t1);
  return 0;
}

标签:Cylinder,return,Point,十三,double,C++,实验,Circle,include
From: https://blog.csdn.net/2201_75406816/article/details/140842485

相关文章

  • L2-008 最长对称子串 C++
    对给定的字符串,本题要求你输出最长对称子串的长度。例如,给定IsPAT&TAPsymmetric?,最长对称子串为sPAT&TAPs,于是你应该输出11。输入格式:输入在一行中给出长度不超过1000的非空字符串。输出格式:在一行中输出最长对称子串的长度。输入样例:IsPAT&TAPsymmetric?输出样......
  • 在python jupyter下运行cuda c++程序
    Installrunthisonjupyter(*.ipynb)files!pip3installnvcc4jupyterUsageloadtheextensiontoenablethemagiccommands:%load_extnvcc4jupyterRuncudatest%%cuda#include<stdio.h>__global__voidhello(){printf("Hellofromblock......
  • 在python jupyter下运行cuda c++程序
    Installrunthisonjupyter(*.ipynb)files!pip3installnvcc4jupyterUsageloadtheextensiontoenablethemagiccommands:%load_extnvcc4jupyterRuncudatest%%cuda#include<stdio.h>__global__voidhello(){printf("Hellofromblock......
  • [米联客-安路飞龙DR1-FPSOC] SDK入门篇连载-03 GPIO PS/PL实验
    软件版本:Anlogic-TD5.9.1-DR1_ES1.1操作系统:WIN1064bit硬件平台:适用安路(Anlogic)FPGA实验平台:米联客-MLK-L1-CZ06-DR1M90G开发板板卡获取平台:https://milianke.tmall.com/登录"米联客"FPGA社区http://www.uisrc.com视频课程、答疑解惑! 1概述本课对FPSoC芯片GPIO进......
  • C++类和对象
    文章目录C++类和对象类和对象1.类和对象的基本概念注意事项:2.类的定义和成员注意事项:3.构造函数和析构函数注意事项:4.访问控制和封装注意事项:5.this指针注意事项:6.静态成员注意事项:7.常量成员函数和常量对象注意事项:8.友元函数和友元类注意事项:9......
  • C++初学(11)
    不知不觉就第11篇了QWQ11.1、指针和自由存储空间之前提到了计算机程序在存储数据时必须跟踪的3个基本属性:(1)信息存储在何处;(2)存储的值为多少;(3)存储的信息时什么类型。之前我们通过定义一个简单变量,让声明语句指出了值的类型和符号名,让程序为值分配内存,还在内部跟踪该内存单......
  • 《消逝的光芒2》三十三项风灵月影修改器功能说明,消逝的光芒2游戏修改器全面运用攻略
    《消逝的光芒2》三十三项风灵月影修改器功能说明在此呈现。它包含了众多强大功能,如无限生命、无限体力、无限道具等。详细的功能阐述让你能清晰了解每个修改项的作用,助你在游戏中轻松畅玩,体验别样的精彩。本篇将为大家带来《消逝的光芒2》三十三项风灵月影修改器功能说明的内容......
  • emsdk安装和编译2个C++基础示例
    参考地址:Downloadandinstall—Emscripten3.1.65-git(dev)documentation 环境:ubuntu24.04LTSgcc(Ubuntu13.2.0-23ubuntu4)13.2.0g++(Ubuntu13.2.0-23ubuntu4)13.2.0cmakeversion3.28.3 Firstcheckthe Platform-specificnotes belowandinstallan......
  • Linux学习第57天:Linux PWM驱动实验
    Linux版本号4.1.15  芯片I.MX6ULL                  大叔学Linux  品人间百味 思文短情长本章的思维导图如下:一、PWM驱动简析1、设备树下的PWM控制节点        8路PWM都属于I.MX6ULL的AIPS-1域,分为了两部分,PW......
  • 《数据结构习题解析与实验指导_李冬梅,张琪编著》总结出的大纲
        下面大纲为《数据结构习题解析与实验指导_李冬梅,张琪编著》总结出的大纲,可装13学习下:          ......