Skip to content

NoNick/Cpp3Semester

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

28 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

BigInteger:
  Реализовать класс BigInteger, который (звездочками отмечены необязательные пункты):
  1) Имеет конcтруктор по умолчанию, создающий объект равный нулю
  2) Имеет конструктор от int
  3*) Имеет конструктор от std::string
  4*) Может быть приведен к std::string
  5) Имеет конструктор копирования
  6) Имеет оператор присваивания
  7) Поддерживает операторы +, -,
  8) Поддерживает операторы +=, -=, =
  9
) Поддерживает операторы /, %, /=, %=
  10
) Имеет move-конструктор
  11) Может быть прочитан из потока (std::istream)
  12) Может быть выведен в поток (std::ostream)
  13) Конструктор от std::string и оператор чтения из потока бросают адекватные исключения при ошибках


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

  Следует придерживаться парадигм ООП
  Карты бывают открытыми и закрытыми, очевидно, что открытая карта может стать закрытой, но никогда наоборот (при этом, как подсказывает здравый смысл, карта может быть открыта только для одного игрока)
  Класс игрок-человек должен быть реализацией некоторого абстрактного класса Игрок, для которого должна быть возможность подставить реализацию компьютерного игрока.
  Для компьютерного игрока не должно быть возможности жульничать, причем создание новых, уничтожение существующих или изменение карт должны приводить к ошибкам при компиляции
Бонусы:
  Корректная обработка любого некорректного ввода пользователя
  Покрытие кода тестами с использованием любого unittest фреймворка
  Универсальная реализация (конкретные правила игры - реализация некоторого абстрактного класса)


DFS
Реализовать представление графа с реализацией dfs:

template
class Graph {
public:
  typedef unsigned NodeHandle;
  typedef std::pair EdgeHandle;
  typedef std::function NodeVisitor;
  typedef std::function EdgeVisitor;
public:
  Graph();
  ~Graph();
  void loadFromFile(std::string const & filename);
  void saveToFile(std::string const & filename);
  NodeHandle addNode();
  void addEdge(NodeHandle const & a, NodeHandle const & b);
  void forEachNode(std::function const & visitor) const;
  size_t getNodesCount() const;
  void forEachEdge(NodeHandle const & source, EdgeVisitor const & visitor);
  NodeHandle move(NodeHandle const & origin, EdgeHandle const & edge);
  NodePayload & operator[](NodeHandle const & node);
  void dfs(NodeVisitor const & startNode, NodeVisitor const & endNode, NodeVisitor const & discoverNode);
};

Вы можете заменить std::function на абстрактные классы(для dfs все три вызова - методы одного класса с такими же именами, как параметры предложенного метода, у остальных - оператор () с соотвествующим аргументом).

Решение не должно содержать рекрсивных вызовов.

Задание оценивается из 10+5 баллов. Бонусные баллы будут даваться за скорость работы приложения.


LazyString
Реализовать предложенный интерфейс. В итоге должна получится строчка с "умным" copy-on-write, т.е. копирование должно происходить только в случае, когда строчка, на данные которой больше одного указателя, изменяется, а не просто читается.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages