帮助实施“商店购买”计划

时间:2011-05-05 03:53:23

标签: c++

我的教授指示我们制作类似星巴克的菜单,用户可以继续输入订单直到完成。我得到了菜单显示和循环,但我无法将它添加到输入的订单并显示总数。

#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;
}

任何可以帮助我的信息?我只是一个初学者,并且已经尝试了几个小时。

3 个答案:

答案 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?";
    }

}

您需要定义包含每个项目成本的数组名称costs。您还需要处理用户输入的验证,这样您就不会错误地尝试在costs数组的范围之外进行读取。

答案 1 :(得分:1)

你可能正在看这样的事情:

#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',因此需要在索引'0'处偏移您的arr并使用'0.00'值。 2)增加的成本跟随索引数组的成本,因此您可能希望根据数组格式化输出,以便下次需要做的就是更新数组。

希望它有所帮助。干杯!

答案 2 :(得分:0)

您设置代码的方式需要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.