2016-03-19 2 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 (это всегда так, в данном случае), поэтому программа не будет вступать петля. Может быть, вы имели в виду что-то вроде:

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

И (& &) не ИЛИ (||)

+0

Да, я заметил, что и это было изменено, спасибо. Также мой цикл был неправильным, поэтому я изменил его на цикл do-while, и теперь он работает отлично. Мне просто нужно использовать do-while для моих других входов, а также принимать только положительные значения – AddieCaddy

Смежные вопросы