c++课程实验报告五源代码

5.1

#include   <iostream>
#include   <complex>
using namespace   std;

class Base
{
public:
    Base() {cout<<"Base-ctor"<<endl;}
    ~Base() {cout<<"Base-dtor"<<endl;}
    virtual void f(int){cout<<"Base::f(int)"<<endl;}
    virtual void f(double){cout<<"Base::f(double)"<<endl;}
    virtual void g(int i=10){cout<<"Base::g()"<<i<<endl;}
};
class Derived : public Base
{
public:
    Derived() {cout<<"Derived-ctor" <<endl;}
    ~Derived(){cout<<"Derived-dtor"<<endl;}
    void f(complex<double>) {
        cout<<"Derived::f(complex)"<<endl;
    }
    void g(int   i=20){
        cout<<"Derived::g()"<<i<<endl;
    }
};
int main()
{
    cout<<sizeof(Base)<<endl;
    cout<<sizeof(Derived)<<endl;

    Base b;
    Derived d;
    Base *pb=new Derived;
    b.f(1.0);
    d.f(1.0);
    pb->f(1.0);
    b.g();
    d.g();
    pb->g();
    delete   pb;
    return 0;
}

5.2

#include   <iostream>
using   namespace   std;
class   Base
{
public:
    Base():data(count)
    {
        cout<<"Base-ctor"<<endl;
        ++count;
    }
    ~Base()
    {
        cout<<"Base-dtor"<<endl;
        --count;
    }
    static int count;
    int data;
};
int Base::count;
class Derived  : public Base
{
public:
    Derived():data(count),data1(data)
    {
        cout<<"Derived-ctor"<<endl;
        ++count;
    }
    ~Derived()
    {
        cout<<"Derived-dtor"<<endl;
        --count;
    }
    static int count;
    int data1;
    int data;
};
int Derived::count=10;
int main()
{
    cout<<sizeof(Base)<<endl;
    cout<<sizeof(Derived)<<endl;

    Base* pb = new Derived[3];
    cout<<pb[2].data<<endl;
    cout<<((static_cast<Derived*>(pb))+2)->data1<<endl;
    delete[] pb;

    cout<<Base::count<<endl;
    cout<<Derived::count<<endl;
    return 0;
}

5.3

#include <iostream>
#include <new>
#include <assert.h>
using namespace std;
class Abstract
{
public:
    Abstract()
    {
        cout << "in Abstract()"<<endl;
    }
    virtual void f() = 0;
};
class Subclass:public Abstract{
public:
    Subclass(){
        cout<<"in Subclass()"<<endl;
    }
    void f(){
        cout<<"Subclass::f()"<<endl;
    }
};
int main()
{

    Abstract *p = new Subclass;
    p->f();
    delete p;
    return 0;
}
5.4
#include<iostream>
#include<cmath>
#define PI 3.14
using namespace std;
class shape
{ 
public: 
virtual float area()=0;
}; 
class triangle:public shape{
public:
    triangle(float A,float B,float C){
        a=A;
        b=B;
        c=C;
    }
    float area(){
        p=(a+b+c)/2.0;
        s=sqrt(p*(p-a)*(p-b)*(p-c));
        return s;
    }
private:
    float a,b,c,p,s;
};
class circles:public shape{
public:
    circles(float R){
        r=R;
    }
    float area(){
        s=PI*r*r;
        return s;
    }
private:
    float r,s;
};
int main()
{
    shape *p;
    triangle t(3,4,5);
    circles c(10);
    p=&t;
    cout<<"triangle area:"<<p->area()<<endl;
    p=&c;
    cout<<"circles area:"<<p->area()<<endl;
}


5.5

#include<iostream>
using namespace std;
class Base{
public:
    virtual void abstractMethod() = 0;
};
class Derived:public Base{
public:
    void abstractMethod(){
        cout<<"Derived::abstractMethod is called"<<endl;
    }
};
int main()
{
    Base* pBase = new Derived;
    pBase->abstractMethod();
    delete pBase;
    return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实验报告中含有:实验目的,问题描述,基本要求;概要设计:抽象数据类型定义,模块层次关系图;调试分析;floyed算法分析;用户使用说明;程序源代码及截图 (ps:该校园导游咨询系统没有输入值,所有信息是都在class MGraph的构造函数中传输的,且校园景点信息皆为【【上海电力学院】】景点信息。请大家注意,直接从文章copy到visual stutio中会出现中文字符,注意删除,推荐大家在一行语句的分号后面,点出光标,按一下delete键,然后按一下enter键,完成visual stutio的自动对齐,这样程序看起来一目了然,更易于操作和更改) 【问题描述】 设计一个校园导游程序,为来访的客人提供各种信息查询服务。 【基本要求】 (1)设计你所在学校的校园平面图,所含景点不少于10个。以图中顶点表示校内各景点,存放景点名称、代号、简介等信息;以边表示路径,存放路径长度等相关信息。 (2)为来访客人提供图中任意景点相关信息的查询。 (3)为来访客人提供图中任意景点的问路查询,即查询任意两个景点之间的一个最短的简单路径。 【选作内容】 (6)扩充每个景点的邻接景点的方向等信息,使得路径查询结果能提供详尽的导向信息。 **************************【以下为类的定义】******************************** #include<iostream> #include<iomanip> using namespace std; const int MaxSize=18; const int INFINITY=65535;//最大值无穷 class direction; template <class T> class MGraph; template <class T> class VertexNode//定义头结点 { friend class MGraph<T>; public: int vex;//顶点名称 T vexname;//顶点名称 T vexinf;//顶点信息 direction dir;//存放顶点方位信息的direction类的dir。 }; class direction { public: int ln;//存放在方向图中的横坐标,表示东西 int col;//存放在方向图中的纵坐标,表示南北 }; template <class T> class MGraph//定义无向图的邻接矩阵 { public: MGraph(); //构造函数,初始化具有n个顶点的图 void printvexname();//显示所有景点及景点代号 void printvexinf(int i);//显示代号为i景点的名称及信息 void printroad(int i,int j);//显示景点i~j的最短路径方案信息 void printdir(int i,int j);//显示景点i到j的方向信息,如“向东100m,向南200m” VertexNode<T> adjlist[MaxSize]; //存放景点全部信息的 景点类数组 int vertexNum,arcNum; //图的顶点数和边数 void Root(int p,int q);//递归寻找pq间的最短路径 int Path[MaxSize][MaxSize],Dist[MaxSize][MaxSize];//创建Path和Dist分别存放两点间最短路径的前驱节点,两点间最短路径长度 int Line[MaxSize];//Line存放路径 int kkk;//Line[]数组的标记 private: T vertex[MaxSize]; //存放图中顶点的数组 int arc[MaxSize][MaxSize];//存放图中边的数组 }; *************************【以下为类的实现 即类函数的定义】*********************************** 详细实验报告内容 程序源代码 及运行截图在文档中有,请下载~

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值