Блок задач

6. Парочка классов

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

Задача «Бюджет»

Сделать программу, которая проверяет исполнение бюджет.

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

Файл с расходами

Формат - позиция, ожидаемое значение, реальное значение, процент исполнения

24.11.2014 Авто:Бензин  1400
23.11.2014 Продукты:Мясо 500
23.11.2014 Продукты:Хлеб 90.33
14.11.2014 Общепит:Столовка 190

Статья расходов представляет собой «путь в дереве», где имена узлов от корня разделяются двоеточием. Даты идут не по порядку.

Файл бюджета

Формат - статья расходов, сумма

Авто               6000
Продукты + Общепит 10000
Алкоголь:Пиво      900

Здесь статьи расходов — это одно или несколько «поддеревьев» в общем «дереве расходов» (несколько поддеревьев сочетаются знаком +). Например, для приведённого выше примера в узле Продукты сумма составит 590.33, а вместе с Общепитом – 780.33. Эту сумму и нужно сопоставить с ожидаемым значением 10000.

Задача

Программа должна получать через аргументы командной строки следующую информацию: файл бюджета, файл расходов, две даты (начало и конец) и вычислять для каждой позиции бюджета реальную сумму.

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

Текстовый файл

Формат -позиция, ожидаемое значение, реальное значение, процент исполнения

Авто               6000   1400    23.3%
Продукты + Общепит 10000  780.33  7.80%
Алкоголь:Пиво      900    0       0%
<Прочие расходы>   0      0

Если расходы по статье будут превышать ожидаемые, процент будет более 100%. В графу <Прочие расходы> попадут все расходы, которые не были отражены ни в одной статье бюджета.