《C++言語基礎》実践参考——オブジェクト配列で直方柱類を操作する

1743 ワード

戻ってきます:賀先生の授業のリンク
【項目3-オブジェクト配列で直方柱クラスを操作する】オブジェクトベースのプログラムを作成し、5つの直方柱の体積と表面積を求める.直方柱クラスBulkのデータメンバーには、長さ(length)、幅(width)、高さ(heigth)などがあります.すでに与えられたコードと照らし合わせて、やるべき仕事と要求は以下の通りです.
  • は、5つのボックスオブジェクトからなるオブジェクト配列bがコードに示されているボックスクラスを定義する必要があります.
  • B配列の最初の3つのオブジェクトb[0]、b[1]、b[2]の直接パラメータが初期化され、コンストラクション関数を定義する必要があるが、初期化では、各オブジェクトが提供するパラメータの数が異なり、デフォルトパラメータを持つコンストラクション関数(与えられていないパラメータのデフォルトは1.0)
  • が必要である.
  • の4番目のオブジェクトb[3]はデフォルトの構造関数で初期化される.
  • 第5個直方柱b[4]定義時に初期化せず、メンバー関数get_を設計するvalue、キーボードから長さ、幅、高さを入力します.
  • はメンバー関数outputを設計し、mainでこの5つのボックス柱の体積と表面積を呼び出す.
  • int main()
    {
         Bulk b[5]={Bulk(2.3,4.5,6.7),Bulk(1.5,3.4),Bulk(10.5)};
         b[4].get_value();
         //       5           
    }

    [参考解答]
    #include <iostream>
    using namespace std;
    class Bulk
    {
    public:
        Bulk(double x=1.0,double y=1.0,double z=1.0):lengh(x),width(y),height(z) {};
        void get_value();
        void display();
    private:
        double lengh;
        double width;
        double height;
    };
    
    void Bulk::get_value()
    {
        cout<<"please input lengh, width, height:";
        cin>>lengh;
        cin>>width;
        cin>>height;
    }
    
    void Bulk::display()
    {
        cout<<"    The volume is: "<<lengh*width*height<<endl;
        cout<<"    The surface area is: "<<2*(lengh*width+lengh*height+width*height)<<endl;
        cout<<endl;
    }
    
    int main()
    {
        Bulk b[5]= {Bulk(2.3,4.5,6.7),Bulk(1.5,3.4),Bulk(10.5)};
        b[4].get_value();
        //                  
        for(int i=0; i<5; ++i)
        {
            cout<<"  b["<<i<<"]"<<endl;
            b[i].display();
        }
        return 0;
    }