2022-polytech-%фамилия%
директорию 08_oop
README.md
файл08_oop/intro
создайте cmake-проектString
, используя код из лекции (разместит код в новых файлах String.h
и String.cpp
)operator<<
строки в std::cout
08_oop/complex
создайте cmake-проект08_oop/complex
CMakeLists.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
и вызова у него +=
.