
Диспетчер космического транспортного флота
Пусть имеется планета (с заданными координатами), производящая необходимый для жизни жителей других планет продукт. Этот продукт нужно доставить по местам назначения с помощью имеющегося в распоряжении флота, состоящего из кораблей, способных ходить на различные расстояния. Условно выделяется три типа кораблей – ближнего (1 световой год), среднего (10 световых лет) и дальнего (до 100 с.л.) следования.
Диспетчер флота имеет информацию о планетах: их названия, координаты (в трёхмерном пространстве) и потребности в продукте. Кроме этого он имеет список имеющихся кораблей. Его задачей является распределение заданий между капитанами кораблей согласно классам их суден. В результате этой работы формируется таблица, содержащая список планет для каждого корабля (с указанием класса судна, расстояния до каждой планеты и объёма перевозимого груза).
Условия:
Координатная единица – 1 с.г., единица измерения груза – тонна.
Корабль за один вылет посещает только одну планету и затем возвращается обратно. Факультативно, после реализации основного задания: снять это ограничение и определять маршрут каждого корабля исходя из запасов топлива. Например, для корабля ближнего действия суммарная длина маршрута, включая обратный путь, не должна превышать 1 с.г. В этом случае в таблицу нужно выводить полный маршрут корабля (названия планет в порядке посещения). Возможно, таких записей для каждого корабля будет несколько.
Кораблей каждого типа может быть несколько. В результирующей таблице они должны группироваться по своему классу.
Записи в группах должны сортироваться по убыванию длины маршрута.
Результирующая таблица представляет собой текстовый файл с разделителями-табуляциями ("\t").
Исходные данные хранятся в текстовом файле следующего формата: первый набор строк описывает имеющиеся корабли (класс, вместимость, название). После завершения описания флота следует пустая строка, за которой идёт описание планет (название, координаты, потребности в продукте). Первой строкой в этом наборе является планета-порт. Данные во всех строках разделяются табуляциями.
Запас продукта в порту неограничен.
Проекты создаются аналогично проектам C++: «Файл/Новый/Проект», в открывшемся диалоге указывается используемый язык и тип приложения – консольное.
Рекомендуемые источники
Джеффри Рихтер. CLR via C#. Программирование на платформе Microsoft .NET Framework 2.0 на языке C#. Мастер-класс. / Пер. с англ. – М. : Издательство «Русская Редакция» : СПб. : Питер, 2007. – 656 стр.: ил.