2016-03-19 16 views
0

こんにちは、GroceryItemクラスを作成し、関数を使用してユーザーからの入力を受け入れ、設定するのに問題が発生しました。GroceryItemクラスで関数を実装するのに手助けが必要です

現在、dataEntry関数を実行すると、コンパイラは最初の関数からの入力を受け入れる前に次の関数に移動します。

コードをテストするためにテストミルクオブジェクトを作成しましたが、次の入力プロンプトに移動する前にデータを入力することはできません。

クラスの機能を理解できたら、オブジェクトの配列とその値を入力します。

このクラスと機能を修正する方法についてのアドバイスをいただければ幸いです。

#include <iostream> 

using namespace std; 

class GroceryItem{ 
private: int stockNumber; 
     double price = 0.0; 
     int quantity; 
     double totalValue; 
     double setPrice(); 
     int setStockNum(); 
     int setQuantity(); 
     void setTotalValue(); 
public: 
    void dataEntry(); 
    void displayValues(); 

}; 
int GroceryItem::setStockNum(){ 
    int stock = 0; 
cout << "Enter the stock number for the grocery item: "; 

do { 
    cout << "Stock Number(1000-9999): "; 
    cin >> stock; 
} while (!(stock >= 1000 && stock <= 9999)); 

    stockNumber = stock; 
    return stockNumber; 
} 
double GroceryItem::setPrice(){ 
    double x = 0.0; 
    cout << "Enter the price of the item: "; 
    while (!(x > 0)) { 
     cout << "Please enter a positive number for price!"; 
     cin >> x; 
    } 
    price = x; 
    return price; 
} 
int GroceryItem::setQuantity(){ 
    int x = 0; 
    cout << "Enter the quantity in stock: "; 
    while (!(x > 0)){ 
     cout << "Please enter a positive number for quantity!"; 
     cin >> x; 
    } 
    quantity = x; 
    return quantity; 
} 
void GroceryItem::setTotalValue(){ 
    totalValue = (quantity * price); 
} 
void GroceryItem::dataEntry(){ 
    setStockNum(); 
    system("pause"); 
    setPrice(); 
    system("pause"); 
    setQuantity(); 
    system("pause"); 
    setTotalValue(); 
} 
void GroceryItem::displayValues(){ 
    cout << "Stock number: " << stockNumber; 
    cout << "\nItem price: " << price; 
    cout << "\nQuantity on hand: " << quantity; 
    cout << "\nTotal value of item: " << totalValue; 
} 


int main(){ 
    GroceryItem Milk; 
    Milk.dataEntry(); 
    Milk.displayValues(); 
    system("pause"); 
    return 0; 
} 
+0

あなたはそれによって何を意味するのですか?これは有効なコード行ではありません。どういう意味ですか? – AddieCaddy

+0

コンストラクタを使用して 'price'メンバーを初期化する必要があります。 –

+0

*デバッガ*の使用に適しています。 –

答えて

0

おい、

!(stock >= 1000 || stock <= 9999) 

株式= 0のために真を返します(常に、真この場合)、そのプログラムは入りませんが、while文の条件に行を注意を払いますループ。 はたぶんあなたのような何かを意味:

!(stock >= 1000 && stock <= 9999) 

AND(& &)ではないOR(||)

+0

うん、私はそれが気づき、それが変更された、ありがとう。また、私のループは間違っていたので、do-whileループに変更しました。今は完全に動作します。私はちょうど正の値を受け入れるために私の他の入力のためのdo-whileを使わなければなりません – AddieCaddy

関連する問題