Блок задач

4. Один класс

Сложность 4

Задача «Scientific гистограмма»

Реализовать класс scientific гистограммы

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

Файл с последовательностью чисел. Пример фрагмента файла:

... 1 2 3 1 2 3 56 5 6 7 5 6 7 ...

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

Гистограмма имеет три основных характеристики - минимальное значение, максимальное значение и количество бинов. Пример: гистограмма с min = 1, max = 10, bin_count = 9. Если в такую гистограмму добавить число 1, то оно попадет в 0 бин, 2 - в 1, 3 - в 2 и т.д. Значения < 1, попадают в 0 бин. Значения > 10 - в 8. Эти параметры должны передаваться в гисторамму при создании (в конструкторе).

Нужно реализовать класс "Гистограмма" с поддержкой следующей функциональности:

  • Хранение словаря пар "номер бина" - "количество вхождений"

  • Создание гистограммы из входного потока std::istream (подсчет кол-ва вхождений)

  • Создание гистограммы по std::vector

  • Возможность итерирования по гистограмме. Методы begin() и end()

  • Сложение с другой гистограммой (перекрытие операторов)

  • Вычитание другой гистограммы (перекрытие операторов)

  • Сравнение гистограмм на равенство (перекрытие операторов)

В перекрытии операторов нужно выполнять логику только если основные параметры гистограмм совпадают. Иначе - кидать исключение.