Написать программу, реализующую процедуры заказа и расчета его суммы в мини — пиццерии. В меню пиццерии предусмотрено 4 вида пиццы и три вида напитков.
Пользователю выводится меню (вначале пиццы, потом
напитки), содержащее код и название. Пользователь вводит
код желаемого продукта, после чего вводит количество единиц
данного продукта.
В пиццерии предусмотрены два вида скидок:
■ если общая сумма заказа более 50$, то размер скидки составляет 20% от суммы заказа;
■ каждая пятая пицца — в подарок;
■ для напитков с ценой более 2$, если количество в заказе более трех, то скидка 15% (только на напитки, а не на
весь заказ).
Вывести пользователю «чек» для оплаты в виде: название —
количество — цена. Итого к оплате.
Написать на языке C++.
Считает кроме общей скидки и скидки на напитки нужно добавить остальное вроде как работает.
Объяснение:
1. Выведем меню пиццерии пользователю. Создадим массив для хранения информации о пиццах и напитках, включая их код, название и цену.
```c++
#include
#include
using namespace std;
struct Product {
int code;
string name;
float price;
};
void printMenu(Product products[], int size) {
cout << "Menu:\n";
cout << "Pizzas:\n";
for (int i = 0; i < size; i++) {
if (products[i].code < 10) {
cout << products[i].code << ". " << products[i].name << " - $" << products[i].price << endl;
}
}
cout << "Drinks:\n";
for (int i = 0; i < size; i++) {
if (products[i].code >= 10) {
cout << products[i].code << ". " << products[i].name << " - $" << products[i].price << endl;
}
}
}
```
2. Позволим пользователю выбрать продукты, ввести их код и количество единиц.
```c++
bool isValidCode(Product products[], int size, int code) {
for (int i = 0; i < size; i++) {
if (products[i].code == code) {
return true;
}
}
return false;
}
void placeOrder(Product products[], int size) {
int code, quantity;
float total = 0.0;
while (true) {
printMenu(products, size);
cout << "Enter the code of the product you want to order (0 to exit): ";
cin >> code;
if (code == 0) {
break;
}
if (isValidCode(products, size, code)) {
cout << "Enter the quantity: ";
cin >> quantity;
total += products[code - 1].price * quantity;
} else {
cout << "Invalid product code. Please try again." << endl;
}
}
cout << "Total: $" << total << endl;
// Применение скидок
if (total > 50) {
total *= 0.8;
}
cout << "Discounted total: $" << total << endl;
}
```
3. Реализуем логику применения скидок в зависимости от условий.
```c++
void placeOrder(Product products[], int size) {
// ...
int numPizzas = 0;
int numDrinks = 0;
float drinksTotal = 0.0;
while (true) {
// ...
if (isValidCode(products, size, code)) {
// ...
if (code < 10) {
numPizzas++;
if (numPizzas % 5 == 0) {
total -= products[code - 1].price;
}
} else {
numDrinks++;
drinksTotal += products[code - 1].price * quantity;
}
} else {
// ...
}
}
// Применение скидок
if (total > 50) {
total *= 0.8;
}
if (numDrinks > 3 && drinksTotal > 2) {
drinksTotal *= 0.85;
total -= (numDrinks - 3) * products[0].price * 0.15;
}
total += drinksTotal;
cout << "Discounted total: $" << total << endl;
}
```
4. Добавим информацию о продуктах в массив и вызовем функцию `placeOrder`.
```c++
int main() {
const int size = 7;
Product products[size] = {
{1, "Pizza Margherita", 10.99},
{2, "Pizza Pepperoni", 12.99},
{3, "Pizza Hawaiian", 11.99},
{4, "Pizza Veggie", 9.99},
{10, "Coca-Cola", 1.99},
{11, "Sprite", 1.99},
{12, "Fanta", 1.99}
};
placeOrder(products, size);
return 0;
}
```
Весь исходный код выглядит следующим образом:
```c++
#include
#include
using namespace std;
struct Product {
int code;
string name;
float price;
};
void printMenu(Product products[], int size) {
cout << "Menu:\n";
cout << "Pizzas:\n";
for (int i = 0; i < size; i++) {
if (products[i].code < 10) {
cout << products[i].code << ". " << products[i].name << " - $" << products[i].price << endl;
}
}
cout << "Drinks:\n";
for (int i = 0; i < size; i++) {
if (products[i].code >= 10) {
cout << products[i].code << ". " << products[i].name << " - $" << products[i].price << endl;
}
}
}
bool isValidCode(Product products[], int size, int code) {
for (int i = 0; i < size; i++) {
if (products[i].code == code) {
return true;
}
}
return false;
}
void placeOrder(Product products[], int size) {
int code, quantity;
float total = 0.0;
while (true) {
printMenu(products, size);
cout << "Enter the code of the product you want to order (0 to exit): ";
cin >> code;
if (code == 0) {
break;
}
if (isValidCode(products, size, code)) {
cout << "Enter the quantity: ";
cin >> quantity;
total += products[code - 1].price * quantity;
} else {
cout << "Invalid product code. Please try again." << endl;
}
}
cout << "Total: $" << total << endl;
int numPizzas = 0;
int numDrinks = 0;
float drinksTotal = 0.0;
while (true) {
printMenu(products, size);
cout << "Enter the code of the product you want to order (0 to exit): ";
cin >> code;
if (code == 0) {
break;
}
if (isValidCode(products, size, code)) {
cout << "Enter the quantity: ";
cin >> quantity;
total += products[code - 1].price * quantity;
if (code < 10) {
numPizzas++;
if (numPizzas % 5 == 0) {
total -= products[code - 1].price;
}
} else {
numDrinks++;
drinksTotal += products[code - 1].price * quantity;
}
} else {
cout << "Invalid product code. Please try again." << endl;
}
}
if (total > 50) {
total *= 0.8;
}
if (numDrinks > 3 && drinksTotal > 2) {
drinksTotal *= 0.85;
total -= (numDrinks - 3) * products[0].price * 0.15;
}
total += drinksTotal;
cout << "Discounted total: $" << total << endl;
}
int main() {
const int size = 7;
Product products[size] = {
{1, "Pizza Margherita", 10.99},
{2, "Pizza Pepperoni", 12.99},
{3, "Pizza Hawaiian", 11.99},
{4, "Pizza Veggie", 9.99},
{10, "Coca-Cola", 1.99},
{11, "Sprite", 1.99},
{12, "Fanta", 1.99}
};
placeOrder(products, size);
return 0;
}
```
Надеюсь, этот ответ поможет вам выполнить задание! Если у вас возникнут еще вопросы, не стесняйтесь спрашивать.