Top.Mail.Ru
Ответы

Всем привет ребята, помогите с задачей по C++, пожалуйста.

Раньше владельцам ресторанного бизнеса приходилось каждый вечер перед закрытием вручную считать количество посетителей и доход за день, а также анализировать эту информацию. Но теперь у них есть вы, а у вас - ООП. Напишите программу, которая поможет в ведении учета владельцам ресторанного бизнеса.

Опишите класс Restaurant, который будет хранить в себе:

количество посетителей customers (изначально 0)
выручку за день profit (изначально 0)
Добавьте в класс два метода:

double get_average_profit() возвращает стоимость среднего чека в ресторане
void count_new_customer(double p) учитывает очередного посетителя, который заказал еды на p рублей
Ваша программа должна:

работать одновременно с двумя ресторанами
поддерживать команду AVG num для печати на экран информации о среднем чеке: "average profit of restaurant num is average_profit", где num - номер ресторана (1 или 2), а average_profit - стоимость среднего чека в этом ресторане с точностью до 2 знаков после запятой
поддерживать команду CUSTOMER num money, где num - номер ресторана (1 или 2), а money - стоимость чека очередного посетителя, которого нужно учесть - увеличить количество посетителей и выручку за день. В результате выполнения этой команды на экран ничего печатать не нужно.
Формат входных данных
В первой строке вводится количество команд n.

В последующих n строках вводятся команды AVG num или CUSTOMER num money, где num - номер ресторана (1 или 2), а money - стоимость чека очередного посетителя.

Формат выходных данных
В качестве реакции на каждую команду AVG num ваша программа должна печатать на экран информацию о среднем чеке: "average profit of restaurant num is average_profit", где num - номер ресторана (1 или 2), а average_profit - стоимость среднего чека в этом ресторане с точностью до 2 знаков после запятой.

Примечания
При создании ресторана все счетчики должны быть обнулены.
входные данные
6
CUSTOMER 1 556.70
CUSTOMER 1 23.50
AVG 1
CUSTOMER 2 267.40
CUSTOMER 2 32.60
AVG 2
выходные данные
average profit of restaurant 1 is 290.10
average profit of restaurant 2 is 150.00

По дате
По рейтингу
Аватар пользователя
Новичок

#include <iostream>
#include <iomanip>
#include <string>
#include <map>
using namespace std;
class Restaurant {
public:
Restaurant() : customers(0), profit(0.) {}
double get_average_profit()const {
return customers? profit / customers : customers;
}
void count_new_customer(double p) {
profit += p;
++customers;
}
private:
unsigned customers;
double profit;
};
int main() {
unsigned n;
cin >> n;
string command;
unsigned key;
double profit;
map<unsigned, Restaurant> box;
cout << fixed << setprecision(2);
while (n) {
cin >> command >> key;
if (command == "CUSTOMER") {
cin >> profit;
Restaurant rs;
if (!box.contains(key)) {
rs.count_new_customer(profit);
box.insert({ key, rs });
}
else box[key].count_new_customer(profit);
} else if (command == "AVG") {
if (box.contains(key)) {
auto avg = box[key].get_average_profit();
cout
<< "average profit of restaurant "
<< key << " is " << avg << '\n';
}
} else continue;
--n;
}
system("pause > nul");
}

P.S. Если метод contains не заработает, то заменить на count