Основы разработки на С++: черный пояс: Части S, T
1000 UAHНужно решить последние два задания курса, для получения сертификата, сертификат нужен для университета и я не собираюсь его использовать где бы то ни было
https://www.coursera.org/learn/c-plus-plus-black/home/welcome
Задание по программированию: Транспортный справочник, часть S. Построение маршрута до организаций
Условие
В этой части вы научитесь строить маршрут до ближайшего парка! А именно, вам понадобится не только искать организации по набору условий, но и строить маршрут от некой остановки до ближайшей подходящей организации. Новая функциональность заключается в обработке нового запроса — RouteToCompany.
Новые данные
Ещё в предыдущей части в описании организации были предусмотрены географические координаты (address.coords) и расстояния до ближайших остановок (nearby_stops). Координаты понадобятся для отображения организации на карте маршрута, а информация про ближайшие остановки используется напрямую при построении маршрута.
В routing_settings добавляется новая настройка маршрутизации — скорость пешехода pedestrian_velocity, измеряемая в км/ч (вещественное число от 0,001 до 1000).
Изменения существующей функциональности
В связи с добавлением новых типов элементов маршрута, старые нуждаются в более понятных названиях:
Bus (поездка на автобусе) переименовывается в RideBus;
Wait (ожидание автобуса) переименовывается в WaitBus.
Новый запрос — RouteToCompany
Помимо стандратного ключа "id" и "type": "RouteToCompany", новый запрос содержит два ключа:
"from" — название остановки, где начинается маршрут.
"companies" — описание ограничений на организацию, до которой необходимо построить маршрут.
Ограничения на организацию — это словарь, который может содержать ключи names, urls, rubrics, phones. Их структура и семантика абсолютно аналогичны части R.
Такой маршрут устроен следующим образом:
Сначала обычный маршрут между двумя остановками, как в запросе Route, в котором чередуются ожидание автобуса (WaitBus) и поездка на нём (RideBus).
И дополнительный элемент — проход пешком от последней остановки предыдущей части маршрута до целевой организации (WalkToCompany). Скорость пешехода считается равной routing_settings.pedestrian_velocity км/ч. Проход до организации возможен лишь от одной из остановок, указанных в nearby_stops этой организации, и занимает время, соответствующее указанному расстоянию между организацией и остановкой.
Ответ на запрос RouteToCompany устроен точно так же, как ответ на запрос Route:
В случае отсутствия маршрута (в том числе по причине отсутствия нужных организаций) выводится {"error_message": "not found"}.
В ключе total_time содержится суммарное время в минутах.
В ключе items содержится массив элементов маршрута.
В ключе map содержится карта маршрута в формате SVG.
Последним элементом в массиве items должен быть элемент, соответствующий проходу до организации, со следующими параметрами:
"type": "WalkToCompany";
"time" — затраченное время (в минутах);
"stop_name" — остановка, от которой нужно пройти;
"company" — основное название компании (см. условие части R).
Сам маршрут должен быть наибыстрым маршрутом данной структуры от указанной остановки до организаций, удовлетворяющих заданным ограничениям. Если существует несколько подходящих маршрутов, выводите любой из них.
Отображение организации на карте маршрута
Схема маршрута до организации должна содержать эту организацию и линию к ней от остановки.
Общая карта (выводимая в ответ на запрос Map) и карты обычных машрутов (Route) остаются без изменений и организаций не содержат.
Новые настройки отрисовки
Добавляются новые настройки отрисовки:
Ключ | Описание | Формат значения | Гарантии |
|---|---|---|---|
company_radius | Радиус круга организации | Вещественное число | Больше 0 и не больше 100000 |
company_line_width | Толщина линии от остановки до организации | Вещественное число | Больше 0 и не больше 100000 |
Новые слои
Добавляются следующие слои:
"company_lines" — линия от последней остановки маршрута до организации;
"company_points" — круг, обозначающий организацию;
"company_labels" — надпись с названием организации.
На общей схеме и схемах обычных маршрутов эти слои не содержат объектов.
В случае, когда маршрут не содержит элементов RideBus и WaitBus, слой stop_labels должен содержать название одной остановки — той, от которой проложен маршрут.
Слой company_lines
Содержит ломаную из двух вершин: от остановки до координаты компании (про координату компании на карте см. ниже).
Свойства:
Цвет линии (stroke) — "black".
Толщина линии (stroke-width) — company_line_width.
Формы конца линии (stroke-linecap) и соединений (stroke-linejoin) — "round".
Слой company_points
Содержит круг, обозначающий организацию.
Свойства:
Центр (cx и cy) — координата организации.
Радиус (r) — company_radius.
Цвет заливки (fill) — "black".
Слой company_labels
Содержит надпись с полным названием компании, отрисованную по координате компании ровно тем же способом, что и названия остановок.
Полное название компании составим следующим образом:
Если компания не содержит рубрик, полное название равно основному названию.
В противном случае это название первой рубрики, пробел и основное название. Например, компания с первой рубрикой "Парк" и основным названием "Дендрарий" получает полное название "Парк Дендрарий".
Вычисление координат компаний
По аналогии с остановками, для каждой компании необходимо по её географическим координатам определить координаты на карте. Это делается для всех организаций сразу (гарантируется, что в address.coords для каждой организации заданы координаты), несмотря на то, что на любой карте не может быть нарисовано более одной организации.
Обратите внимание, что в JSON, поступающем на вход программе make_base, координаты компаний задаются в виде строк (см. примеры). Это сделано для сохранения точности при автоматической конвертации в protobuf.
Алгоритм из части M модифицируется для одновременного размещения на карте остановок и организаций:
Организации считаются опорными точками, так что их географические координаты предварительно не модифицируются.
Долготы и широты остановок и компаний одновременно подвергаются сжатию координат. Соседями каждой организации (для целей определения маршрутных соседей среди долгот и широт) считаются остановки, от которых можно до неё дойти.
x- и y-координаты вычисляются по сжатым координатам одновременно для остановок и для организаций.
Пример 1
Вход программы make_base
Вход программы process_requests
Выход программы process_requests
Выход программы process_requests, маршрут 1

Выход программы process_requests, маршрут 2

Пример 2
Вход программы make_base
Вход программы process_requests
Выход программы process_requests
Выход программы process_requests, маршрут 1

Выход программы process_requests, маршрут 2

Выход программы process_requests, маршрут 3

Ограничения
В этой части количество компаний не превышает 1000.
Для каждой компании количество элементов в nearby_stops не превосходит 10.
Количество запросов к process_requests не превосходит 500.
Каждое название остановки NearbyStop.name — название существующей остановки из транспортного справочника.
Расстояние NearbyStop.meters — положительное число, не превосходящее 1000000.
Количество остановок и автобусов, а также количество остановок любого автобусного маршрута не превосходят 100.
Ограничения по времени: 1 с для make_base, 3 с для process_requests.
Общее ограничение по памяти — 512 МБ.
Задание T пока недоступно, но не думаю, что оно намного сложнее чем S, решения прошлых заданий доступны здесь
https://github.com/momsspaghettti/coursera-c-plus-plus-modern-development/tree/master/Black
Приложения 6
-
104 Могу попробовать сделать, выполнял студенческие задания по ООП, STL больше года
Актуальные фриланс-проекты в категории C и C++
Реверс-инжиниринг консольных утилит для опроса контроллеров SSD (Flash ID)1. Цель работы Выделение программного интерфейса (API) взаимодействия с контроллерами SSD/NVMe из предоставленного набора консольных утилит (Phison, Silicon Motion, Realtek, Maxiotek, Marvell, JMicron и др.). Результатом должно стать рабочий код на языке C/C++ или точная… C и C++, Десктопные приложения ∙ 11 дней 1 час назад ∙ 6 ставок |
Разработка карты семян Minecraft Java / просмотрщика семян для сайтаРазработка карты семян Minecraft Java / Seed Viewer для сайтаОписание проекта Необходимо разработать браузерный инструмент Minecraft Java Seed Map / Seed Viewer, который будет работать на нашем сайте и позволит пользователю ввести семя Minecraft Java Edition и просмотреть… C и C++, HTML и CSS верстка ∙ 11 дней 8 часов назад ∙ 17 ставок |