Skip to content
This repository has been archived by the owner on Mar 2, 2020. It is now read-only.

GEN05/infotecs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Тестовое задание

  1. Требуется разработать консольное приложение, работающее с классом-контейнером простых чисел.
  2. Три режима поиска простых чисел:
  • Поиск простых чисел в диапазоне с верхней границей – задается максимальное значение, до которого рассчитываются и запоминаются простые числа, начиная с 1.
  • Поиск определенного количества простых чисел – задается количество простых чисел, начиная с 1, которые требуется рассчитать и запомнить.
  • Поиск простых чисел без верхней границы.
  1. Два режима вывода:
  • В файл
  • В консоль
  1. Выбор последовательности специальных простых чисел. Контейнер содержит все найденные простые числа, но печататься (в консоль или файл) должны не все числа, а только те, которые входят в последовательности специальных простых чисел, например, «Суперпростые числа», «Простые числа Софи Жермен». Требуется поддержать минимум 2 специальные последовательности. По умолчанию печатаются все простые числа. Функция для проверки принадлежности простого числа специальной последовательности должна быть реализована в виде Лямбда-функции. Описание последовательностей специальных простых чисел: Википедия.
  2. Требуется получать статистику: как меняется скорость поиска простых чисел, как растет объем памяти, необходимый для поиска. Эти показатели должны выводится в файл. Для каждого нового расчета пишется своя строка. Формирование статистики включается опцией командной строки, в которой указывается имя файла, в который сохраняется статистика.
  3. Требуется оптимизировать объем используемой памяти
  4. Написать конструктор копирования, копирующее присваивание контейнера.
  5. Написать конструктор перемещения, перемещающее присваивание контейнера.

Требования к присылаемым решениям:

  1. Проект должен компилироваться под ОС Linux.
  2. Проект должен компилироваться с использованием make и g++.
  3. При написании задания необходимо использовать стандарт C++ 11.
  4. Код должен быть задокументирован с использованием синтаксиса doxygen.
  5. Решение фиксируется на github. История коммитов должна отражать процесс разработки.
  6. Обязательно наличие тестов для интерфейса класса. Тестовое покрытие должно быть максимальным. Использование gtest приветствуется. Тесты должны учитывать необходимое количество сценариев работы с классом. При этом ожидается, что на положительных сценариях класс будет работать, а на отрицательных - давать ожидаемые ошибки, а не вести себя непредсказуемо.
  7. В процессе работы, программа должна выводить информативные сообщения в консоль.