Помощь в реализации программы «покупка в магазине»

#c

#c

Вопрос:

Мой профессор поручил нам создать меню, подобное Starbucks, в котором пользователь может продолжать вводить заказы, пока они не будут завершены. Я отключил отображение меню вместе с циклом, но я не могу заставить его суммировать введенные заказы и отобразить общее количество.

 #include <iostream>
using namespace std;

int main()
{
    int choice = 1;

    cout << endl << "Welcome to Hunterbucks!";

    while (choice > 0)
    {
        cout << endl << "Input -1 when you're finished ordering!";
        cout << endl << endl << "Coffee" << " " << "($)";
        cout << endl << "1. Regular" << " " << "1.50";
        cout << endl << "2. Decaf" << " " << "1.23";
        cout << endl << "3. Americano" << " " << "2.25";
        cout << endl << "4. Espresso" << " " << "2.25";
        cout << endl << "5. Latte" << " " << "2.50";
        cout << endl << "6. Cappuccino" << " " << "2.75";
        cout << endl << "7. Frappuccino" << " " << "2.75";
        cout << endl << "8. Macchiato" << " " << "2.50";

        cout << endl << endl << "Snacks" << " " << "($)";
        cout << endl << "9. Muffin" << " " << "1.00";
        cout << endl << "10. Blueberry Muffin" << " " << "1.25";
        cout << endl << "11. Raspberry Muffin" << " " << "1.25";
        cout << endl << "12. Scone" << " " << "0.75";
        cout << endl << "13. Blueberry Scone" << " " << "1.00";
        cout << endl << "14. Croissant" << " " << "0.75";

        cout << endl << endl << "What would you like to order? ";       
        cin >> choice;

        if (choice <= 0)
            cout << endl << "Thank you for your order.";
        else 
            cout << endl << "What else would you like to order?";

    }

    cout << endl << "Thank you for choosing Hunterbucks! Come again soon.";

    return 0;
}
  

Любая информация, которая может мне помочь? Я всего лишь новичок и пробую это в течение нескольких часов.

Ответ №1:

В псевдокоде вы хотите что-то вроде этого:

 float total = 0.0;
while (choice > 0)
{
    ....
    cin >> choice;

    if (choice <= 0)
        cout << endl << "Thank you for your order.";
    else
    {
        total  = costs[choice]; 
        cout << endl << "What else would you like to order?";
    }

}
  

Вам нужно будет определить массив names costs , который содержит стоимость каждого товара. Вы также захотите заняться проверкой пользовательского ввода, чтобы ошибочно не пытаться читать за пределами диапазона costs массива.

Ответ №2:

Вы, вероятно, смотрите на что-то вроде этого:

 #include <iostream>
using namespace std;

int main()
{
    int choice = 1;
    float sum = 0.0;
    float arr[] = {
          0.00, 1.50, 1.23, 2.25, 2.25, 2.50, 2.75, 2.75, 2.50,
          1.00, 1.25, 1.25, 0.75, 1.00, 0.75
    };

    cout << endl << "Welcome to Hunterbucks!";

    while (choice > 0)
    {
        cout << endl << "Input -1 when you're finished ordering!";
        cout << endl << endl << "Coffee" << " " << "($)";
        cout << endl << "1. Regular" << " " << "1.50";
        cout << endl << "2. Decaf" << " " << "1.23";
        cout << endl << "3. Americano" << " " << "2.25";
        cout << endl << "4. Espresso" << " " << "2.25";
        cout << endl << "5. Latte" << " " << "2.50";
        cout << endl << "6. Cappuccino" << " " << "2.75";
        cout << endl << "7. Frappuccino" << " " << "2.75";
        cout << endl << "8. Macchiato" << " " << "2.50";

        cout << endl << endl << "Snacks" << " " << "($)";
        cout << endl << "9. Muffin" << " " << "1.00";
        cout << endl << "10. Blueberry Muffin" << " " << "1.25";
        cout << endl << "11. Raspberry Muffin" << " " << "1.25";
        cout << endl << "12. Scone" << " " << "0.75";
        cout << endl << "13. Blueberry Scone" << " " << "1.00";
        cout << endl << "14. Croissant" << " " << "0.75";

        cout << endl << endl << "What would you like to order? ";       
        cin >> choice;

        if (choice <= 0){
            cout << endl << "Thank you for your order.";
        } else {
            cout << endl << "What else would you like to order?";
            sum  = arr[choice];
        }

    }

    cout << "Total: " << sum << endl;
    cout << endl << "Thank you for choosing Hunterbucks! Come again soon.";


    return 0;
}
  

Обратите внимание на следующее:

1) Ваши варианты выбора в меню указаны с ‘1’, поэтому необходимо компенсировать ваш arr с индексом ‘0’ значением ‘0.00’. 2) Суммируемая стоимость соответствует стоимости вашего индексированного массива, поэтому вы, вероятно, захотите отформатировать выходные данные в соответствии с вашим массивом, чтобы в следующий раз все, что вам нужно было сделать, это обновить ваш массив.

Надеюсь, это помогло. Приветствия!

Ответ №3:

Способ настройки вашего кода требует switch инструкции, подобной следующей:

 double total = 0;

switch (choice)
{
    case 1:
        total  = 1.50; // Regular.
        break;
    case 2:
        total  = 1.23; // Decaf.
        break;
    // Etc.
}

cout << endl << "Your total is " << total;
  

При этом самым простым способом сделать это было бы иметь массив цен:

 double prices[] = {1.50, 1.23, 2.25};

// ...

total  = prices[choice - 1]; // No switch statement needed.