第4周專案3-用物件陣列操作長方柱類

不被看好的青春叫成長發表於2015-03-28
*  
 * Copyright (c) 2015, 煙臺大學計算機學院  
 * All rights reserved.  
 * 檔名稱:test.cpp  
 * 作    者:劉暢   
 * 完成日期:2015年 3 月 27 日  
 * 版 本 號:v1.0  
 * 
 * 問題描述: 需要你定義長方柱類,程式碼中已經給出由5個長方柱物件構成的物件陣列b;
             b陣列中的前3個物件b[0]、b[1]、b[2]直接引數初始了,需要定義建構函式,而初始化中,各物件提供的引數數目不同,需要有預設引數的建構函式(未給出的引數預設為1.0)
             第4個物件b[3]用預設建構函式初始化;
             第5個長方柱b[4]定義時不初始化,設計成員函式get_value,由鍵盤輸入長、寬、高;
             設計成員函式output,在main中呼叫輸出這5個長方柱的體積和表面積;
 * 輸入描述:輸入長方柱4的長寬高;
 * 程式輸出:按要求輸出。

 

 

程式碼如下:

#include <iostream>
using namespace std;
class Bulk
{
public:
    Bulk(double x=1.0,double y=1.0,double z=1.0):length(x),width(y),heigth(z) {};
    void get_value();
    void output();

private:
    double length;
    double width;
    double heigth;
};

void Bulk::get_value()
{
    double x,y,z;
    cin>>x>>y>>z;
    length=x;
    width=y;
    heigth=z;
}

void Bulk::output()
{
    cout<<"長(length): "<<length<<" 寬(width): "<<width<<" 高(heigth):"<<heigth<<endl;
    cout<<"體積(volume): "<<length*width*heigth<<endl;
    cout<<"表面積(areas): "<<2*(length*width+length*heigth+width*heigth)<<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<<"長方柱("<<i<<"):"<<endl;
        b[i].output();
        cout<<endl;
    }
    return 0;
}


執行結果:

 

學習心得:

這道題是在之前第一週的長方柱的內容上擴充開來的,主要還是建構函式的問題,直接採用了引數初始化表的方式去對資料成員進行初始化。

對於get_value函式,做完之後為了寫最前面的作業要求的問題描述,我去看了下老師的部落格,發現他是直接cin>>length的,這樣應該更好,節約了記憶體空間。

相關文章