using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ImaginaryNumber // 本来写虚数的,一不小心写成完整的复数了
{
class Complex // 虚数类
{
private double Real; // 实部
private double Img; // 虚部
public double GetReal // 获取实部
{
get { return Real; }
set { Real = value; }
}
public double GetImg // 获取虚部
{
get { return Img; }
set { Img = value; }
}
public Complex() // 构造函数
{
Real = Img = 0;
}
public Complex(double real, double img) // 重载构造函数
{
Real = real;
Img = img;
}
public void Print() // 输出虚数,符合书写习惯,且四舍五入保留小数点后4位数字
{
if (Real == 0 && Img == 0) // 为零
Console.WriteLine("0");
else if (Real == 0) // 只有虚部,纯虚数
Console.WriteLine("{0}i", (double)Math.Round((double)Img, 4));
else if (Img == 0) // 只有实部,实数
Console.WriteLine("{0}", (double)Math.Round((double)Real, 4));
else if (Img < 0) // 虚部为负
Console.WriteLine("{0} - {1}i", (double)Math.Round((double)Real, 4), (double)Math.Round((double)-Img, 4));
else // 标准的复数
Console.WriteLine("{0} + {1}i", (double)Math.Round((double)Real, 4), (double)Math.Round((double)Img, 4));
}
public static Complex operator +(Complex c1, Complex c2) // 重载加号
{
return new Complex(c1.Real + c2.Real, c1.Img + c2.Img);
}
public static Complex operator -(Complex c) // 重载取反符号
{
return new Complex(-c.Real, -c.Img);
}
public static Complex operator -(Complex c1, Complex c2) // 重载减号
{
return new Complex(c1.Real - c2.Real, c1.Img - c2.Img);
}
public static Complex operator *(Complex c1, Complex c2) // 重载乘号
{
return new Complex(c1.Real * c2.Real - c1.Img * c2.Img, c1.Real * c2.Img + c1.Img * c2.Real);
}
public static Complex operator /(Complex c1, Complex c2) // 重载除号
{
return new Complex((c1.Real * c2.Real + c1.Img * c2.Img) * 1.0 / (c2.Real * c2.Real + c2.Img * c2.Img), (c1.Img * c2.Real - c1.Real * c2.Img) * 1.0 / (c2.Real * c2.Real + c2.Img * c2.Img));
}
}
class Program
{
static void Main(string[] args)
{
// 随意测试
Complex c1 = new Complex();
Complex c2 = new Complex(5, 5);
Complex c3 = new Complex(0, -2.3);
Complex c4 = new Complex(3, 0);
c4 = -c4;
Console.Write("c1 = "); c1.Print();
Console.Write("c2 = "); c2.Print();
Console.Write("c3 = "); c3.Print();
Console.Write("c4 = "); c4.Print();
c1 = c2 + c3;
c2 = c3 / c4;
c3 = c1 * c2;
c4 = c2 - c3;
Console.Write("c1 = "); c1.Print();
Console.Write("c2 = "); c2.Print();
Console.Write("c3 = "); c3.Print();
Console.Write("c4 = "); c4.Print();
Console.ReadLine();
}
}
}
复数类完整实现 + 四则运算符重载
最新推荐文章于 2022-09-11 15:57:32 发布