2022-polytech-%фамилия% директорию 08_oopREADME.md файл08_oop/intro создайте cmake-проектString, используя код из лекции (разместит код в новых файлах String.h и String.cpp)operator<< строки в std::cout08_oop/complex создайте cmake-проект08_oop/complexCMakeLists.txt с таким содержаниемcmake_minimum_required(VERSION 3.12 FATAL_ERROR)
project(complex LANGUAGES CXX)
set(CMAKE_CXX_STANDARD 17)
include(doctest.cmake)
add_executable(tests custom_complex.cpp test_complex.cpp)
target_link_libraries(tests PRIVATE doctest)
test_complex.cpp с таким содержанием
```cpp
#define DOCTEST_CONFIG_IMPLEMENT_WITH_MAIN
#include TEST_CASE(“sum of complex numbers”) { CHECK_EQ(Complex(1, 0)+Complex(2, 0), Complex(3, 0)); CHECK_EQ(Complex(-1, 0)+Complex(2, 0), Complex(1, 0)); CHECK_EQ(Complex(1, 1)+Complex(0, 2), Complex(1, 3)); CHECK_EQ(Complex(0, -2)+Complex(0, 3), Complex(0, 1)); }
TEST_CASE(“sub of complex numbers”) { CHECK_EQ(Complex(1, 0)-Complex(2, 0), Complex(-1, 0)); CHECK_EQ(Complex(-1, 0)-Complex(2, 0), Complex(-3, 0)); CHECK_EQ(Complex(1, 1)-Complex(0, 2), Complex(1, -1)); CHECK_EQ(Complex(0, -2)-Complex(0, 3), Complex(0, -5)); }
TEST_CASE(“abs of complex numbers”) { CHECK_EQ(Complex(1, 0).abs(), 1); CHECK_EQ(Complex(-1, 0).abs(), 1); CHECK_EQ(Complex(1, 1).abs(), doctest::Approx(1.41421).epsilon(0.01)); CHECK_EQ(Complex(0, -2).abs(), 2); }
```
operator==08_oop/students создайте cmake-проект с использованием doctestStudent, который содержит имя и оценку студентаStudenList, который содержит список студентов (используйте массив)StudenList методы, позволяющие добавить студента, удалить студента, поставить оценку студенту, получить среднюю оценку студентов, спиоск лучших студентов (высокая оценка), список худших студентов (низка оценка)std::coutКомментарии
operator+, удобно создать и оператор operator+=, тогда реализация первого состоит из создания временного объекта tmp и вызова у него +=.