2016-03-19 23 views
0

Merhaba, bir Bakteri sınıfı oluştururken ve bir kullanıcıdan gelen girişleri kabul etmek ve ayarlamak için bazı işlevler kullanıyorum.GroceryItem sınıfındaki işlevleri uygulama konusunda yardıma mı ihtiyacınız var

Şu anda dataEntry işlevini çalıştırdığımda, derleyici, ilk işlevden girişi kabul etmeden önce sonraki işleve geçer.

Kodumu sınamak için bir test süt nesnesi oluşturdum ancak bir sonraki giriş istemine geçmeden önce veri girmeme izin vermiyor.

Sınıf işlevlerini anlayabildiğim zaman, bunun için bir dizi nesne ve girdi değeri de oluşturacağım.

Bu dersi ve işlevleri düzeltmek için nasıl gidebileceğime dair herhangi bir tavsiye büyük önem taşıyor!

#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

Ne demek: Belki böyle bir şey geliyordu? Geçerli bir kod satırı değil, yani – AddieCaddy

+0

anlamına geldiğinden emin değilsiniz 'fiyat' üyesini bir kurucu kullanarak başlatmalısınız. –

+0

Bir * debugger * kullanımı için iyi bir aday gibi görünüyor. –

cevap

0

Dostum, while ifadesinin durumuna hattını

!(stock >= 1000 || stock <= 9999) 
dikkat hisse senedi için gerçek

döner = 0 (her zaman doğru, bu durumda), bu yüzden programın girmeyecektir döngü.

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

VE Bununla (& &) değil OR (||)

+0

Evet fark ettim ve bu değişti, teşekkürler. Ayrıca benim döngüsüm yanlıştı, bu yüzden bir do-while döngüsüne değiştirdim ve şimdi mükemmel çalışıyor. Diğer girdilerim için sadece olumlu değerleri kabul etmek için bir süre kullanmam gerekiyor – AddieCaddy

İlgili konular