Skip to content

Repository files navigation

TD3 - C++ 复数类实现

本项目是 C++ 面向对象编程练习的一部分,目标是实现一个功能完备且高效的 Complexe 类,用于表示和操作复数。

项目结构

.
├── CMakeLists.txt          # CMake 构建配置文件
├── build.sh                # 构建脚本
├── .gitignore              # Git 忽略文件配置
├── 题目.md                 # 实验题目描述
├── solution_process.md     # 详细的解题思路和过程
├── README.md               # 本文件
├── cmake/                  # CMake 配置文件
│   └── ComplexeLibConfig.cmake.in
├── include/                # 头文件目录
│   └── Complexe.h          # Complexe 类的头文件
├── src/                    # 源代码目录
│   └── Complexe.cpp        # Complexe 类的实现文件
├── tests/                  # 测试文件目录
│   ├── TD_main_Validation.cpp # 功能验证测试程序
│   └── TD_main_Bench_CPU.cpp  # 性能基准测试程序
└── build/                  # 构建输出目录 (由 CMake 生成)
    ├── validation_test     # 验证测试可执行文件
    └── bench_test          # 性能测试可执行文件

Complexe 类功能

Complexe 类支持以下操作:

  • 构造函数:
    • 默认构造函数 Complexe() (初始化为 0+0j)
    • 带参构造函数 Complexe(double re, double im)
    • 从单个 double 初始化 (虚部为0)
  • 算术运算:
    • 复数与复数: +, -, *, /
    • 复数与 double: +, -, *, / (双向,例如 c + dd + c)
  • 特性计算:
    • GetModule(): 计算模
    • GetArgument(): 计算辐角 (弧度)
    • Conjugue(): 计算共轭 (也可通过 operator! 调用)
  • 比较:
    • operator==: 判断两个复数是否相等
  • 输出:
    • Affiche(): 以 (R +Ij) 格式输出到控制台
    • AffichePolar(): 以极坐标 Mei(A) (弧度) 格式输出
    • AffichePolarDegre(): 以极坐标 Mei(A) (角度) 格式输出
    • operator<<: 支持 std::ostream 输出,例如 cout << c;
  • 极坐标设置:
    • SetPolarCoord(double mod, double arg_rad)
    • SetPolarCoordDegre(double mod, double arg_deg)

详细的设计思路和每个问题的解答,请参见 solution_process.md 文件。

编译与运行

本项目使用 CMake 作为构建系统,提供了更现代化和跨平台的编译方式。

快速开始

使用提供的构建脚本(推荐):

./build.sh

这个脚本会自动创建 build 目录,配置 CMake,并编译整个项目。

手动编译

如果你想手动控制编译过程:

1. 创建构建目录

mkdir build && cd build

2. 配置 CMake

# Debug 模式(默认)
cmake ..

# Release 模式(带优化)
cmake .. -DCMAKE_BUILD_TYPE=Release

3. 编译项目

make -j4

或者使用 CMake 的通用编译命令:

cmake --build . --parallel 4

运行测试

编译完成后,在 build 目录中:

运行验证测试

./validation_test

运行性能基准测试

./bench_test

运行所有测试(通过 CTest)

make test

或者:

ctest --verbose

解题过程

关于此 TD 中每个问题的详细分析、UML 设计、代码实现思路以及对性能和易用性的讨论,请参考 solution_process.md 文件。

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages