Язык программирования С, лабораторная работа 1. Структуры, объединения, массивы.

Инструментарий

Для подготовки текста решений задач следует использовать произвольный текстовый редактор, желательно - с подсветкой синтаксиса (geany, редактор файлового менеджера mc и т.д.).

Для компиляции - компилятор gcc.

Описание предметной области, общая формулировка задачи

В помещении (см.рис.) расположено до 24 устройств (от 1 до 23 компьютеров, от 1 до 2 коммутаторов). Зная расположения устройств и их характеристики, рассчитать минимальную длину кабеля, который понадобится для эффективного объединения компьютеров в локальную сеть, с учетом следующих ограничений и условий:

Минимальный набор характеристик компьютера: тип устройства, тип сетевой карты (100 или 1000 МБит).

Минимальный набор характеристик коммутатора: тип устройства, количество портов 100МБит, количество портов 1000МБит.

Каждое устройство должно быть описано с использованием структуры и/или объединения, вне зависимости от типа устройства. Для хранения устройств рекомендуется использовать одномерный массив (индекс соответствует расположению элемента).

Количество, местоположение и характеристики коммутаторов и компьютеров задаются при вводе.

Длина кабеля (см.рис.) между рядом расположенными устройствами по вертикали - 1.5М. Длина кабеля между рядом расположенными устройствами по горизонтали - 1М. Длина кабеля между устройствами 23 и 24 - 3М.

Кабели могут быть протянуты только по вертикали и/или горизонтали в пределах синего поля (см.рис.). Диагональное расположение кабелей запрещено. Например, если коммутатор находится в позиции 9, а компьютер - в позиции 2, то минимальная длина кабеля между этими устройствами равна 4 метра (2 сегмента по вертикали, один - по горизонтали).

Коммутаторы должны объединяться друг с другом одним кабелем с использованием (если это возможно) гигабитных портов. Оставшиеся после объединения гигабитные порты коммутаторов должны подключаться к гигабитным сетевым картам компьютеров, даже если это увеличивает минимальную длину кабеля.

Входные данные

Для входных данных рекомендуется создать текстовый файл и перенаправлять его на ввод программы. Под входными данными понимаются:
  1. Кол-во компьютеров (от 1 до 23).
  2. Характеристики каждого компьютера (расположение в помещении, тип сетевой карты)
  3. Кол-во коммутаторов (от 1 до 2).
  4. Характеристики каждого коммутатора (расположение в помещении, количество портов 100МБит, количество портов 1000МБит)

Выходные данные

  1. Общая длина кабеля
  2. Для каждого коммутатора:
    1. Позиция коммутатора
    2. Для каждого компьютера, подключенного к этому коммутатору: тип порта коммутатора, позиция компьютера, тип сетевой карты компьютера, длина кабеля
    3. При наличии второго коммутатора: позиция и тип порта текущего коммутатора, позиция и тип порта другого коммутатора, длина кабеля между коммутаторами

Тестовое задание 1

Сформировать исходные данные в соответствии расположением устройств в аудитории 219А (коммутаторы имеют по 24 гигабитных порта, каждый компьютер - по гигабитной сетевой карте). Рассчитать минимальную длину кабеля.

Тестовое задание 2

2 коммутатора в позициях 23,24 (по 14 портов 100МБ, по 2 порта 1000МБ). Компьютеры в позициях 1-22. Компьютеры в позициях 1 и 12 имеют гигабитные сетевые карты. Остальные компьютеры имеют карты по 100МБит.

Тестовое задание 3

1 коммутатор в позиции 1 (8 портов 100МБ, 8 портов 1000МБ). Компьютеры в позициях 2,4,6,8,10,12,14,16,18,20,22. Компьютеры на правом столе - с гигабитными сетевыми картами, на левом - со стомегабитными. Рассчитать минимальную длину кабеля.

Зачет задачи

В случае успешного прохождения базовых тестовых заданий решение проверяется преподавателем на индивидуально сформированных тестах. Успешное прохождение всех индивидуальных тестов гарантирует зачет задачи.