Swift实现复数计算器
更新时间:2022年01月27日 09:53:06 作者:正在爬的程序猿
这篇文章主要为大家详细介绍了Swift实现复数计算器,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
(福利推荐:【腾讯云】服务器最新限时优惠活动,云服务器1核2G仅99元/年、2核4G仅768元/3年,立即抢购>>>:9i0i.cn/qcloud)
(福利推荐:你还在原价购买阿里云服务器?现在阿里云0.8折限时抢购活动来啦!4核8G企业云服务器仅2998元/3年,立即抢购>>>:9i0i.cn/aliyun)
本文实例为大家分享了Swift实现复数计算器的具体代码,供大家参考,具体内容如下
Swift使用笛卡尔和极坐标进行转换的复数计算器
import Foundation struct Complex{ ? ? //实部real ? ? public var real : Double = 0 ? ? //虚部img ? ? public var img : Double = 0 ? ? public var polar :(mod:Double,arg:Double) = (0,0) ? ? public var Cartesian :(real:Double,img:Double) = (0,0) ? ? public var FirstPolar :(mod:Double,arg:Double) = (0,0) ? ? init(PolarNumber:(mod:Double,arg:Double)) { ? ? ? ? FirstPolar = PolarNumber ? ? ? ? ChangePolar = PolarNumber as (Double,Double) ? ? // ?print(judgment(parameter: ChangePolar)) ? ? ? ?? ? ? } ? ? //笛卡尔转极坐标 ? ? public var ChangeCartesian :(mod:Double,arg:Double){ ? ? ? ? get{ ? ? ? ? ? ? return polar ? ? ? ? } ? ? ? ? set(CartesianNum){ ? ? ? ? ? ? polar.mod = sqrt((CartesianNum.mod * CartesianNum.mod)+(CartesianNum.arg * CartesianNum.arg)) ? ? ? ? ? ? polar.arg = atan2(CartesianNum.arg, CartesianNum.mod) ? ? ? ? } ? ? } ? ? //极坐标转笛卡尔 ? ? public var ChangePolar : (real:Double,img:Double){ ? ? ? ? get{ ? ? ? ? ? ? return Cartesian ? ? ? ? } ? ? ? ? set(PolarNum){ ? ? ? ? ? ? Cartesian.real = PolarNum.real * cos(PolarNum.img) ? ? ? ? ? ? Cartesian.img = PolarNum.real * sin(PolarNum.img) ? ? ? ? } ? ? } ? ? //判断 ? ? public func judgment(parameter:(real:Double,img:Double))->String { ? ? ? ?? ? ? ? ? ? ? if parameter.img > 0 { ? ? ? ? ? ? ? ? return "\(Double(round(parameter.real * 1000)/1000))+\(Double(round(parameter.img * 1000)/1000))?" ? ? ? ? ? ? } else if parameter.img < 0 { ? ? ? ? ? ? ? ? return "\(Double(round(parameter.real * 1000)/1000))-\(-(Double(round(parameter.img * 1000)/1000)))?" ? ? ? ? ? ? ? ?} else { ? ? ? ? ? ? ? ? return "\(Double(round(parameter.img * 1000)/1000))" ? ? ? ? ? ? ? ?} ? ? ? ? ? ?} ? ? //计算前进行格式转换 ? ? public mutating func ChangeAdd(AddNum:(mod:Double,arg:Double)){ ? ? ? ? ChangePolar = FirstPolar as (Double,Double) ? ? ? ? //初始值通过set进行了转换 ? ? ? ? let x = ChangePolar ? ? ? ? //用x进行一个存储 ? ? ? ? ChangePolar = AddNum as (Double,Double) ? ? ? ? let y = ChangePolar ? ? ? ? Add(x: x, y: y) ? ? ? ? //调用Add方法,进行运算 ? ? } ? ? public mutating func ChangeSubtract(SubNum:(mod:Double,arg:Double)){ ? ? ? ? ChangePolar = FirstPolar as (Double,Double) ? ? ? ? let x = ChangePolar ? ? ? ? ChangePolar = SubNum as (Double,Double) ? ? ? ? let y = ChangePolar ? ? ? ? Subtract(x: x, y: y) ? ? } ? ? public mutating func ChangeMultiply(MulNum:(mod:Double,arg:Double)){ ? ? ? ? ChangePolar = FirstPolar as (Double,Double) ? ? ? ? let x = ChangePolar ? ? ? ? ChangePolar = MulNum as (Double,Double) ? ? ? ? let y = ChangePolar ? ? ? ? Multiply(x: x, y: y) ? ? } ? ? public mutating func ChangeDiv(DivNum:(mod:Double,arg:Double)){ ? ? ? ? Divide(x: FirstPolar, y: DivNum) ? ? } ? ?? ? ? //加减乘除方法 ? ? public func Add(x:(real:Double,img:Double),y:(real:Double,img:Double)){ ? ? ? ? let answer = (x.real + y.real,x.img + y.img) ? ? ? ? print(judgment(parameter: answer)) ? ? } ? ? public func Subtract(x:(real:Double,img:Double),y:(real:Double,img:Double)){ ? ? ? ? let answer = (x.real - y.real,x.img - y.img) ? ? ? ? print(judgment(parameter: answer)) ? ? } ? ? public func Multiply(x:(real:Double,img:Double),y:(real:Double,img:Double)){ ? ? ? ? let answer = (x.real * y.real - x.img * y.img,x.real * y.real + x.img * y.img) ? ? ? ? print(judgment(parameter: answer)) ? ? } ? ? public mutating func Divide(x:(mod:Double,arg:Double),y:(mod:Double,arg:Double)){ ? ? ? ? let answer = ((x.mod / y.mod),(x.arg - y.arg)) // ? ? ? ChangePolar = answer ? ? ? ? print(judgment(parameter: answer)) ? ? } ? ?}
以及对应的测试
var test = Complex(PolarNumber: (mod: 10.63, arg: 0.852))//7,8 //加法 test.ChangeAdd(AddNum: (mod: 2.2361, arg: 1.107))//8.0+10.0? //减法 test.ChangeSubtract(SubNum:(mod: 2.2361, arg: 1.107))//5.999+6.0? //乘法 test.ChangeMultiply(MulNum: (mod: 2.2361, arg: 1.107))//-8.997+23.001? //除法 test.ChangeDiv(DivNum:(mod: 2.2361, arg: 1.107))//4.754-0.255?##?
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持程序员之家。
最新评论