2014-04-26 49 views
1

我還是新來的類,所以在這裏我到目前爲止所做的。在這個節目,我必須將提示用戶輸入多少的產品和價格,我不得不這樣再次顯示回:類中的數組

No  Product Code Price 
1   101   4.50 

並計算平均價格。

我的班級必須容納100個我仍不確定如何實施的對象。希望任何人都可以幫助我。

#include <iostream> 

using namespace std; 


class Product{ 
private : 
    int code; 
    double price; 

public : 
    Product(); 
    void setCode(int); 
    void setPrice(double); 

    int getCode(); 
    double getPrice(); 
}; 

Product :: Product() 
{ 
    code = 0; 
    price = 0; 
} 

void Product :: setCode(int c) 
{ 
    code = c; 
} 

void Product :: setPrice(double p) 
{ 
    price = p; 
} 

int Product :: getCode() 
{ 
    return code; 
} 

double Product :: getPrice() 
{ 
    return price; 
} 

int main(){ 

    const int size = 100; 
    Product m[size]; 
    int procode; 
    double proprice; 
    int num; 
    double sum= 0; 

    cout << "How many products to enter? "; 
    cin >> num; 

    cout << endl; 

    for(int i=0; i<num ;i++) 
    { 
     cout << "Enter the information of product #"<< (i+1)<<endl; 

     int code; 
     cout << "\tProduct Code: "; 
     cin >> code; 
     m[i].setCode(code); 

     double price; 
     cout << "\tPrice: "; 
     cin >> price; 
     m[i].setPrice(price); 

     sum = sum + price; 
    } 

    ///output?? 
    cout <<"No"<<" "<<"Product Code"<<" "<<"Price" <<endl; 


    cout<<" "<<m[i].getCode()<<" "<<m[i].getPrice()<<endl; 

    cout<<"Average: " << sum/num << endl; 


    return 0; 

} 
+2

用[性病::矢量](http://en.cppreference.com/w/cpp/container/vector)或[標準::陣列](HTTP:// EN。 cppreference.com/w/cpp/container/array) –

+0

我還沒有學習使用矢量...任何其他選項? – user3544721

+2

用簡單的數組進行練習一開始就很好,但你應該學會使用std :: vector和std :: array,它會簡化你的代碼,防止難以發現的錯誤,最重要的是 - 這是C++的方式它。許多人通過使用像printf這樣的C特性開始學習C++。 – Excelcius

回答

0

功能主要可以寫成下面的方式

int main() 
{ 
    const size_t MAX_ITEMS = 100; 
    Product m[MAX_ITEMS]; 
    size_t num; 

    cout << "How many products to enter? "; 
    cin >> num; 

    if (MAX_ITEMS < num) num = MAX_ITEMS; 

    for (size_t i = 0; i < num; i++) 
    { 
     cout << "\nEnter the information of product #" << (i+1) << endl; 

     int code; 
     cout << "\tProduct Code: "; 
     cin >> code; 
     m[i].setCode(code); 

     double price; 
     cout < "\tPrice: "; 
     cin >> price; 
     m[i].setPrice(price); 
    } 

    // here can be the code for output data 

    return 0; 
} 
+0

m [i] .code不能正確,因爲我將它設置爲私有 – user3544721

+0

我需要爲輸出創建另一個數組嗎? – user3544721

+1

@ user3544721您必須使用相同的數組和數字num來輸出數組。循環的控制語句與輸入數據相同。 –

1
for(int i=0; i<num ;i++) 
    { 
     cout << "Enter the information of product #"<< (i+1)<<endl; 
     cout << "Product Code:"; 
     cin >> procode; 
     m[i].setCode(procode); 
     cout < "\nPrice:"; 
     cin >> proprice; 
     m[i].setPrice(proprice); 
    } 

這將設置所需的對象的數量。

Access作爲

cout<<m[index].getCode()<<m[index].getPrice(); 
+0

我應該如何聲明數組? – user3544721

+0

您是否已經通過產品m [100]完成了這項工作? –

+0

ouh是tx。但我無法訪問它。 – user3544721

1

你的意思是動態分配? 如果您希望用戶指定可變數量的產品,則必須在知道num後動態創建陣列。 例如:

int main() { 

    Product * m; 
    int num; 

    cout << "How many products to enter? "; 
    cin >> num; 
    cout << endl; 

    m = new Product[num]; 

    for (int i=0; i<num; i++) { 
     // something with the array 
    } 

    delete [] m; 

    return 0; 

}