#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.