Книга заказов
Пора за новый проект! В этом мини-проекте вместе работают последние три урока — типы объектов, объединения и сужение типов, данные в виде размеченных объединений — и всё, что вы узнали до них. Как и в первом мини-проекте, задания говорят, что должна вывести программа, а как её написать — решать вам. И, как там, каждое упражнение запускает вашу программу ещё и с другими данными, так что она должна всё вычислять из данных.
Проект. Кузнец из Вороньего Утёса ведёт книгу заказов, а вы пишете программу, которая считает цены заказов. За три упражнения она вычислит цену каждого заказа, даст постоянным клиентам скидки, а затем научится обрабатывать новый вид заказов.
Данные. Каждый заказ — это Order, размеченное объединение с тегом kind. Кузнец куёт новые вещи ("forge") из одного из трёх металлов, ремонтирует повреждённые ("repair") и затачивает клинки ("sharpen"). У каждого заказа есть customer и item, а у некоторых видов есть и другие свойства: у откованной вещи — её metal, а у ремонта указано, насколько сильно вещь повреждена, в процентах. forgePrices — это Record с ценой ковки из каждого металла, в программе есть и таблица названий металлов для вывода, а в orders лежат заказы этой недели, по одному в строке.
Задача. Ковка стоит столько, сколько указано в forgePrices для этого металла, ремонт стоит половину повреждения в золотых монетах, а заточка всегда стоит sharpenPrice. Выведите строку для каждого заказа и итог в конце:
Кира: ковка, Наконечники стрел (сталь), цена 35
Бруно: ремонт, Боевой топор, цена 15
Лена: заточка, Кинжал, цена 8
Бруно: ковка, Щит (бронза), цена 20
Итого: 78Подсказка: хорошее начало — switch по kind с проверкой полноты из урока «Моделирование данных». В последнем упражнении вы будете рады, что он у вас есть.
Задание
- 1
Выведите строку для каждого заказа с его ценой, как в примере.
- 2
Под заказами выведите итог.