Vearlit
2019-11-27 09:05
采纳率: 66.7%
浏览 449

怎么用C++编写组合对象的使用?

有以下要求:
1、设计类似PPT页的类CPPage,定义其数据成员、成员函数,要求至少包含一个矩形对象数组和一个椭圆形对象数组(最好是动态对象数组)(椭圆形类仿照矩形类设计)
2、设计成员函数Show显示本PPT页的相关信息:如矩形个数,椭圆形个数
3、设置CPPage类为矩形类的友元类;并在Show函数中直接访问矩形类的文本串。
4、增加一个静态成员对CPPage类进行计数;
5、对象信息的输入方式采用读取文本文件的方式。
注:拜托给出所有代码,救救孩子吧,万分感谢!

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • threenewbee 2019-11-27 09:07
    已采纳
    // Q977352.cpp : Defines the entry point for the console application.
    //
    
    #include "stdafx.h"
    
    #include <iostream>
    #include <fstream>
    #include <string>
    using namespace std;
    
    class Rectangle
    {
    friend class CPPage;
    private:
        int t, l, w,h;
        string msg;
    public:
        Rectangle() { t=l=w=h=0;  }
        Rectangle(int top, int left, int width, int height) { t =top;l=left;w=width;h=height; }
        Rectangle(const Rectangle & src) {  t=src.t;l=src.l;w=src.w;h=src.h;msg=src.msg; }
        void ShowMsg() { cout << t << l << w << h << msg; }
        ~Rectangle() { }
        void setMsg(string s) { msg = s; }
        string getMsg() { return msg; }
    };
    
    class Ellipse
    {
    private:
        int a, b;
    public:
        Ellipse() { a=b=0; }
        Ellipse(int a, int b) { this->a = a; this-> b = b; }
        Ellipse(const Ellipse & src) { a=src.a;b=src.b; }
        ~Ellipse() {}
        void Show() { cout << a << b; }
    };
    
    class CPPage
    {
    private:
        Rectangle rect[100];
        Ellipse elp[100];
        int rectn;
        int elpn;
        static int pagecount;
    public:
        CPPage() { rectn=elpn=0; }
        void Show() { 
            cout<<rectn<<elpn;
            for (int i = 0; i < rectn; i++)
                cout << rect[i].msg;
        }
        void addRect(Rectangle r) { rect[rectn++] = r; }
        void addEllipse(Ellipse e) { elp[elpn++] = e; }
    };
    
    int main()
    {
        ifstream infile;
        infile.open("c:\\1.txt");
        int m;
        int n;
        CPPage page;
        infile >> m;
        infile >> n;
        for (int i = 0; i < m; i++)
        {
            int t, l, w,h;
            string msg;
            infile >> t >> l >> w >> h;
            infile >> msg;
            Rectangle rect(t, l, w, h);
            rect.setMsg(msg);
            page.addRect(rect);
        }
        for (int i = 0; i < n; i++)
        {
            int a,b;
            infile >> a >> b;
            Ellipse elp(a,b);
            page.addEllipse(elp);
        }
        page.Show();
        return 0;
    }
    
    

    1.txt文本内容

    2
    1
    1
    1
    1
    1
    aaa
    2
    2
    2
    2
    bbb
    1
    1
    

    输出
    21aaabbb

    打赏 评论

相关推荐 更多相似问题