用c#求复数的和

hua1123581321 2008-11-20 03:04:14
紧急 用C# 定义描述复数的类,并实现(两个)复数的输入和输出。设计出两个方法,分别完成这两个服输的加法和减法。
...全文
659 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
fjcolin 2010-10-14
  • 打赏
  • 举报
回复
不错 不错
jnbruce 2008-12-08
  • 打赏
  • 举报
回复
这个C#课程的一个课后题吧?下面是我当时写的一个,感觉也不怎么好。其实二楼的写的挺好,只是没实现输入功能啊(个人意见)
public class Complex
{
double r, v; //r+vi
public Complex(double r, double v)
{
this.r = r;
this.v = v;
}
public void print()
{
Console.WriteLine(r + " + " + v + "i");
}
public static Complex add(Complex a, Complex b)
{
return new Complex(a.r+b.r,a.v+b.v);
}
public static Complex minus(Complex a, Complex b)
{
return new Complex(a.r - b.r, a.v - b.v);
}
public static Complex multi(Complex a, Complex b)
{
return new Complex(a.r * b.r - a.v * b.v, a.r * b.v + a.v * b.r);
}

}
class Program
{
static void Main(string[] args)
{
Console.Write("请输入第一个复数的实部:");
double i = double.Parse(Console.ReadLine());
Console.Write("请输入第一个复数的虚部:");
double j = double.Parse(Console.ReadLine());
Console.Write("请输入第二个复数的实部:");
double i2 = Convert.ToDouble(Console.ReadLine());
Console.Write("请输入第二个复数的虚部:");
double j2 = Convert.ToDouble(Console.ReadLine());

Complex x1 = new Complex(i, j);
Complex x2 = new Complex(i2, j2);

Complex x3 = Complex.add(x1, x2);
x3.print();
x3 = Complex.minus(x1, x2);
x3.print();
x3 = Complex.multi(x1, x2);
x3.print();
Console.ReadLine();
}
}
LorenLiu 2008-11-21
  • 打赏
  • 举报
回复
恩。你同学的办法也是正确的,只不过我的注重点是将“复数”这个概念封装成了一个类,而你同学是注重加减法的实现。处理问题的着眼点不一样而已
xxyping 2008-11-21
  • 打赏
  • 举报
回复
都可以,不过我觉得2楼的方法要好的多
hua1123581321 2008-11-21
  • 打赏
  • 举报
回复
非常感谢!!!但是比较复杂,我们同学也写出来了。你看一下
class Program
{
static void Main(string[] args)
{
Console.WriteLine("计算加法请输入 1,计算减法请输入 2。");
int i = int.Parse(Console.ReadLine());
if (i == 1)
{
Console.WriteLine("请输入第一个复数的实部:");
int a = int.Parse(Console.ReadLine());
Console.WriteLine("请输入第一个复数的虚部:");
int b = int.Parse(Console.ReadLine());
Console.WriteLine("请输入第二个复数的实部:");
int c = int.Parse(Console.ReadLine());
Console.WriteLine("请输入第二个复数的虚部:");
int d = int.Parse(Console.ReadLine());

newlei m = new newlei();
m.jisuanjiafa(a, c);
newlei m1 = new newlei();
m1.jisuanjiafa(b, d);
Console.WriteLine("计算的复数结果是y={0}+{1}i", m.x, m1.x);
}
else if (i==2)
{
Console.WriteLine("请输入第一个复数的实部:");
int a = int.Parse(Console.ReadLine());
Console.WriteLine("请输入第一个复数的虚部:");
int b = int.Parse(Console.ReadLine());
Console.WriteLine("请输入第二个复数的实部:");
int c = int.Parse(Console.ReadLine());
Console.WriteLine("请输入第二个复数的虚部:");
int d = int.Parse(Console.ReadLine());
newlei m2 = new newlei();
m2.jisuanjianfa(a, c);
newlei m3 = new newlei();
m3.jisuanjianfa(b, d);
Console.WriteLine("计算的复数结果是y={0}+{1}i", m2.x, m3.x);
}


Console.ReadLine();



}
}
class newlei
{
public int x;
public int jisuanjiafa(int a, int b)
{
x = a + b;
return x;
}
public int jisuanjianfa(int a, int b)
{
x = a - b;
return x;
}
}
}
LorenLiu 2008-11-20
  • 打赏
  • 举报
回复
试试下面的代码

class Program
{
static ComplexNumber Add(ComplexNumber num1, ComplexNumber num2)
{
double realPart = num1.RealPart + num2.RealPart;
double imaginaryPart = num1.ImaginaryPart + num2.ImaginaryPart;
return new ComplexNumber(realPart, imaginaryPart);
}

static ComplexNumber Minus(ComplexNumber num1, ComplexNumber num2)
{
double realPart = num1.RealPart - num2.RealPart;
double imaginaryPart = num1.ImaginaryPart - num2.ImaginaryPart;
return new ComplexNumber(realPart, imaginaryPart);
}

static void Main(string[] args)
{
ComplexNumber num1 = new ComplexNumber(1, 2);
ComplexNumber num2 = new ComplexNumber(0.5, -3.4);

ComplexNumber addResult = Add(num1, num2);
ComplexNumber minusResult = Minus(num1, num2);

Console.WriteLine("The first complex number is " + num1.ToString());
Console.WriteLine("The second complex number is " + num2.ToString());
Console.WriteLine("The sum of them is " + addResult.ToString());
Console.WriteLine("The minus of them is " + minusResult.ToString());
}
}
struct ComplexNumber
{
double m_RealPart;
double m_ImaginaryPart;

public ComplexNumber(double realPart, double imaginaryPart)
{
m_RealPart = realPart;
m_ImaginaryPart = imaginaryPart;
}

public double RealPart
{
get { return m_RealPart; }
set { m_RealPart = value; }
}

public double ImaginaryPart
{
get { return m_ImaginaryPart; }
set { m_ImaginaryPart = value; }
}

// output the complex number
public override string ToString()
{
if (m_RealPart == 0 && m_ImaginaryPart != 0)
return string.Format("{0}i", m_ImaginaryPart);
else if (m_RealPart != 0 && m_ImaginaryPart == 0)
return string.Format("{0}", m_RealPart);
else if (m_RealPart != 0 && m_ImaginaryPart < 0)
return string.Format("{0}-{1}i", m_RealPart, Math.Abs(m_ImaginaryPart));
return string.Format("{0}+{1}i", m_RealPart, m_ImaginaryPart);
}
}
  • 打赏
  • 举报
回复
复数…………

囧了!偶数学不好,依稀记得复数=实数和虚数的统称

up

111,131

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧