Написать программу, реализующую процедуры заказа и расчета его суммы в мини — пиццерии. В меню пиццерии предусмотрено 4 вида пиццы и три вида напитков.

Пользователю выводится меню (вначале пиццы, потом

напитки), содержащее код и название. Пользователь вводит

код желаемого продукта, после чего вводит количество единиц

данного продукта.

В пиццерии предусмотрены два вида скидок:

■ если общая сумма заказа более 50$, то размер скидки составляет 20% от суммы заказа;

■ каждая пятая пицца — в подарок;

■ для напитков с ценой более 2$, если количество в заказе более трех, то скидка 15% (только на напитки, а не на

весь заказ).

Вывести пользователю «чек» для оплаты в виде: название —

количество — цена. Итого к оплате.

Написать на языке C++.

mak57 mak57    3   20.01.2022 17:30    118

Ответы
Tricjt Tricjt  20.01.2022 17:40

Считает кроме общей скидки и скидки на напитки нужно добавить остальное вроде как работает.

Объяснение:

ПОКАЗАТЬ ОТВЕТЫ
291104 291104  22.01.2024 15:34
Хорошо, давайте разобьем задачу на несколько шагов:

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

Надеюсь, этот ответ поможет вам выполнить задание! Если у вас возникнут еще вопросы, не стесняйтесь спрашивать.
ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика