README.md 4.45 KB
Newer Older
ДОМАШНЕЕ ЗАДАНИЕ № 1

по курсу «Основы программирования на C++»

Потоки ввода-вывода и стандартная библиотека шаблонов (STL)

Для каждой части предоставить меню, позволяющее продемонстрировать основные возможности программы.

Часть 1. Последовательные контейнеры

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

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

1.1. Функция, выгружающая данные с использованием файловых потоков.

1.2. Функция, использующая алгоритм generate для инициализации вспомогательного контейнера и алгоритм copy для вывода его содержимого в файл с использованием потоковых итераторов.

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

2.1. Функция, загружающая данные с использованием файловых потоков.

2.2. Функция, загружающая данные с использованием потоковых итераторов и алгоритма copy.

3. Функция modify(), модифицирующая загруженные данные в соответствии с вариантами:

Предусмотреть следующие версии функции Modify():

3.1. Как шаблонная функция, принимающая последовательный контейнер данного типа. Должна добавлять в конец контейнера результата сумму и среднее арифметическое элементов контейнера по абсолютной величине.

3.2. Как функция, принимающая аргументы-итераторы.

3.3. Как функция, использующая алгоритм for_each(). Конкретную операцию передавать в виде функционального объекта или лямбда-функции.

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

4. Функция outputResult() для вывода контейнера-результата. Предусмотреть следующие версии данной функции:

4.1. Функция, выгружающая данные с использованием файловых потоков.

4.2. Функция, использующая алгоритм copy для вывода контейнера в файл с использованием потоковых итераторов.

Часть 2. Ассоциативные контейнеры

Выполнить следующие задания, реализовав индексный массив в виде ассоциативного контейнера-отображения.

Основные требования

1. Реализация шаблонных функций не должна зависеть от конкретных типов данных, т.е. не допускается явно указывать конкретный тип (например, тип элементов контейнеров). Нужно использовать типы контейнеров (valuе_type и др.).

2. Работа с файлами осуществляется на основе потоковых классов C++.