Блок задач

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

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

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

Написать программу, генерирующую форматированную таблицу

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

Входной текстовый файл:

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

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

Создать функцию печати таблицы.

enum Formatting {
    LEFT, RIGHT, CENTER
};

void print_table(ostream &os, const std::vector<Formatting> &columns,
                 const std::vector<std::vector<std::string> > &table);

Аргумент columns задаёт форматирование колонок таблицы, а также фиксирует их количество. table представляет из себя вектор строк, каждая из которых состоит из множества колонок. Если строка по количеству элементов меньше, чем размер columns, недостающие элементы считаются пустыми. Если, наоборот, больше, то лишние элементы игнорируются. Ширина каждой колонки определяется по максимальной длине ячейки, принадлежащей этой колонке.

Для отладки и проверки работы функции print_table реализовать программу, которая читает таблицу из файла и выводит её в другой файл. Первая строка файла состоит из символов <, >, =, которые задают форматирование. Остальные строки представляют собой строки таблицы (колонки разделены символом табуляции).

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

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

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