面向对象实例编程

来源:互联网 发布:忧伤的嫖客 知乎 编辑:程序博客网 时间:2024/04/29 12:10

第一题:
这里写图片描述

代码如下:

#include <iostream>#include<stdio.h>using namespace std;class UniversityObject{    public:        virtual char * getSummary() = 0;};class Student:public UniversityObject{    public:        Student(char * name, char * stu_id);        char * getSummary();        ~Student(){delete[] summary;}    private:        char * Name;        char * Stu_ID;        char *summary;};Student::Student(char * name, char * stu_id){    Name = name;    Stu_ID = stu_id;    summary = new char[4096];}char * Student::getSummary(){    sprintf(summary, "学号 %s, %s", Stu_ID, Name);    return summary;}class LectureTheatre:public UniversityObject{    public:        LectureTheatre(double room_num, int seat_num);        char * getSummary();        ~LectureTheatre(){delete[] summary;}    private:        double Room_num;        int Seat_num;        char *summary;};LectureTheatre::LectureTheatre(double room_num, int seat_num){    Room_num = room_num;    Seat_num = seat_num;    summary = new char[4096];}char * LectureTheatre::getSummary(){    int i,d;    i = (int)Room_num;    d = (int)(Room_num * 1000 - i * 1000);    sprintf(summary, "%d号楼%d, 共%d个座位", i, d, Seat_num);    return summary;}class Module:public UniversityObject{    public:        Module(char * title, char * code, int stu_num);        char * getSummary();        ~Module(){delete[] summary;}    private:        char * Title;        char * Code;        int  Stu_num;        char *summary;};Module::Module(char * title, char * code, int stu_num){    Title = title;    Code = code;    Stu_num = stu_num;    summary = new char[4096];}char * Module::getSummary(){    sprintf(summary, "编号%s, 《%s》,%d人选修", Code, Title, Stu_num);    return summary;}int main(){    UniversityObject *a1 = (UniversityObject *) new Student ("张三", "0320121113");    UniversityObject *a2 = (UniversityObject *) new LectureTheatre (3.205, 186);    UniversityObject *a3 = (UniversityObject *) new Module ("面向对象技术", "0321011", 185);    printf("汇总结果:\n    学生: %s\n    教室: %s\n    课程: %s\n", a1->getSummary(),a2->getSummary(),a3->getSummary());    return 0;}

第二题:
这里写图片描述

代码如下:

#include <iostream>using namespace std;const int Capacity = 30;template <class T> class CQueue{    public:        CQueue(){Queue = new T[Capacity];}        void init(){front = rear = 0;}        int size(); //current size        bool EnQueue(T e);//enter element        bool DeQueue(T &e);//delete element        bool GetElement(int i, T &e);//get element        ~CQueue(){delete[] Queue;}    private:        int front;        int rear;        T *Queue;};template <class T>int CQueue<T>::size(){    return (rear - front + Capacity) % Capacity;}template <class T>bool CQueue<T>::EnQueue(T e){    if((rear+1) % Capacity == front)//CQueue is full        return false;    Queue[rear] = e;    rear = (rear+1) % Capacity;    return true;}template <class T>bool CQueue<T>::DeQueue(T &e){    if(front==rear)//CQueue is empty        return false;    e = Queue[front];    front = (front+1) % Capacity;    return true;}template <class T>bool CQueue<T>::GetElement(int i, T &e){    if(i<1||i>size())        return false;    e = Queue[i-1];    return true;}int main(){    int elem,in,index;    char YorN1, YorN2;    CQueue<int> q;    q.init();    cout<<"Enter 10 elements automatically:"<<endl;    for(int i=1;i<=10;i++)    { //Enter elements automatically        q.EnQueue(i*2);        cout<<i*2<<" ";    }    cout<<endl<<"The number of the valid elements: "<<q.size()<<endl<<endl;    while(q.size() < Capacity)    {        cout<<"Do you wanna enter a number by yourself? y/n: ";        cin>>YorN1;        if(YorN1=='y')        {            cout<<"Enter a number: ";            cin>>in;            if(q.EnQueue(in))            {                cout<<"Successful enter: "<<in<<endl;            }        }        else break;    }    cout<<endl<<"The number of the valid elements: "<<q.size()<<endl;    for(int j=1;j<=q.size();j++)    { //Get all elements        if(q.GetElement(j, elem))            cout<<"Queue["<<j<<"]:"<<elem<<endl;    }    cout<<endl;    while(1)    {        cout<<"Do you wanna get an element? y/n: ";        cin>>YorN2;        if(YorN2=='y')        {            cout<<"Enter the index of the element:";            cin>>index;            if(q.GetElement(index, elem))                cout<<"Queue["<<index<<"]:"<<elem<<endl;        }        else break;    }    cout<<endl<<"Delete elements from the CQueue:"<<endl;    while(q.size())    {        q.DeQueue(elem);        cout<<elem<<" ";    }    cout<<endl;    if(!q.DeQueue(elem))        cout<<"CQueue is empty"<<endl<<endl;    cout<<"Maxsize of the CQueue: "<<Capacity<<endl<<endl;    return 0;}

运行结果:

Enter 10 elements automatically:2 4 6 8 10 12 14 16 18 20The number of the valid elements: 10Do you wanna enter a number by yourself? y/n: yEnter a number: 5Successful enter: 5Do you wanna enter a number by yourself? y/n: yEnter a number: 2Successful enter: 2Do you wanna enter a number by yourself? y/n: nThe number of the valid elements: 12Queue[1]:2Queue[2]:4Queue[3]:6Queue[4]:8Queue[5]:10Queue[6]:12Queue[7]:14Queue[8]:16Queue[9]:18Queue[10]:20Queue[11]:5Queue[12]:2Do you wanna get an element? y/n: yEnter the index of the element:3Queue[3]:6Do you wanna get an element? y/n: nDelete elements from the CQueue:2 4 6 8 10 12 14 16 18 20 5 2CQueue is emptyMaxsize of the CQueue: 30Process returned 0 (0x0)   execution time : 89.872 sPress any key to continue.
0 0