数据类型标志
接上次数据抽象最后的问题,我需要一个数据标志,1就表示数据是极坐标,0就表示数据是直角坐标,这样在运算的时候,就不会数据转换造成精度损失,也不用调用不同的运算函数来计算了。
在开始这个之前,需要枚举 enum 的概念:
枚举 enum 和 struct 关键字很类似,enum XXX 用来表示一个枚举类型,枚举类型的成员是常量,他们的值编译器自动分配:
默认是从0开始分配,如果给第一个赋值,那么就会从那个值开始,数据类型是int
所以上述代码:num1 num2 num3 num4 num5 的值分别为,0 1 2 1 2
另外要注意,枚举成员的名字和变量的名字是在统一命名空间的 ,这点和结构体不同
构建复数格式枚举:
好,这里我们就可以实现我们目的了,在之前的两种构建复数函数中添加一个新的结构体变量:
在构建复数函数中也进行修改:
这样两个构建复数的函数都带上了标签,z.t 为0就是 a + bi 格式,为1就是极坐标格式。
对运算函数加一行判断标志
这样修改之后的函数,不需要直到输入的复数是什么格式的,都可以计算出正确的实部。
同理其他运算函数都做类似添加,函数接口没有发生改变,但是运算函数却可以兼容不同的复数格式了。
至此,结构体告一段落。