Блок задач

4. Структуры данных

Темы
Сложность 4

Задача «Вывод таблицы»

Реализовать генерацию форматированной таблицы

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

Текстовый файл, содержащий описание таблицы и саму таблицу:

<=>
Vasya   !     100
Petya   OMG   2
A
AA      BBBBB

Файл может содержать пустые и невалидные строки. Программа должна корректно это обрабатывать.

Постановка задачи

Реализовать программу, которая читает таблицу из файла и выводит её форматированную версию в другой файл.

  1. Первая строка файла состоит из символов <, >, =, которые задают форматирование. Каждый из символов указывает выравнивание в очередной колонке, а их количество задаёт число колонок.
  2. Остальные строки представляют собой строки таблицы (колонки разделены символом табуляции). Если строка по количеству элементов меньше, чем количество колонок, недостающие элементы считаются пустыми. Если, наоборот, больше, то лишние элементы игнорируются. Ширина каждой колонки определяется по максимальной длине ячейки, принадлежащей этой колонке.

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

Текстовый файл (результат работы программы для вышеописанных входных данных)

+-------+-------+-----+
| Vasya |   !   | 100 |
+-------+-------+-----+
| Petya |  OMG  |   2 |
+-------+-------+-----+
| A     |       |     |
+-------+-------+-----+
| AA    | BBBBB |     |
+-------+-------+-----+

Тестирование

Для всех разработанных модулей должны быть созданы наборы unit тестов. Функций ввода/вывода нужно тестировать с помощью std::stringstream.