首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >复数运算的C++运算符重载

复数运算的C++运算符重载
EN

Stack Overflow用户
提问于 2010-12-04 01:14:57
回答 5查看 7.7K关注 0票数 6

我在C++有一项任务,我在入门时遇到了麻烦。目标是“设计一个对复数使用以下重载运算符的类:>> << +-*/”

我的问题不是关于这个的语法,而是关于逻辑。我需要一些头脑风暴的帮助。

输入示例:

2.5 -2.2

1.0 1.0

OutPut示例:

A= (2.5) + (-2.2)i

B= (1.0) + (1.0)i

A+B= (3.5) + (-1.2)i

A-B= ..............

A*B= ..............

A/B= ..............

那么我该如何开始呢?类"Complex“重载了这些运算符,所以这是否意味着我只能在类中(即在公共函数中)使用这些运算符?如果是这样,我会想这样做吗?或者我想在我的客户端/驱动程序代码中这样做?

其次,它只是将i加到每行的第二个值上吗?这似乎太容易了。任何方向都将不胜感激。(顺便说一句,我不想找任何人帮我做作业……可以只使用一些输入)

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2010-12-04 01:21:36

在我看来,重点是演示类操作重载,所以我认为你的想法是制作一个类复合体,它包含关于实数和虚数的信息(I表示它是虚数)。在您自己操作的运算符覆盖中处理复数之间的各种操作。

一旦你有了它并且你看到它工作了(创建一个静态测试方法,它执行各种操作并将结果打印到屏幕上),然后担心使用那个类来处理输入,因为解析输入本身就是另一项任务。有时候,把问题分成更小的问题要比同时做这两件事简单得多。

希望这能有所帮助。祝好运!

票数 7
EN

Stack Overflow用户

发布于 2010-12-04 01:24:55

他们喜欢成对的值:

代码语言:javascript
运行
复制
A = N1 + I1i
B = N2 + I2i


A + B = (N1 + I1i) + (N2 + I2i)
      = N1 + I1i + N2 + I2i
      = (N1 + N2) + (I1i + I2i)
      = (N1 + N2) + (I1 + I2)i
A - B = (N1 + I1i) - (N2 + I2i)
      = N1 + I1i - N2 - I2i
      = (N1 - N2) + (I1i - I2i)
      = (N1 - N2) + (I1 - I2)i

// N1, N2, I1, I2 are all just normal numbers.
// You can multiply them like normal. You just have to keep track of the `i`
// Also not that i = sqrt(-1)
// Therefore  i * i = sqrt(-1) * sqrt(-1)
//                  = sqrt(-1)^2
//                  = -1
A * B = (N1 + I1i) * (N2 + I2i)
      = (N1 * N2) + (N1 * I2i) + (I1i * N2) + (I1i * I2i)
      = (N1 * N2) + (N1 * I2)i + (N2 * I1)i + (i * i * I1 * I2)
      = (N1 * N2) + i((N1 * I2) + (N2 * I1)) + (-1 * I1 * I2)

      // Simplest form
      = ((N1 * N2) - (I1 * I2)) + ((N1 * I2) + (N2 * I1))i


A / B = Repeat as above.
票数 2
EN

Stack Overflow用户

发布于 2010-12-04 01:27:33

您需要设计一个名为Complex的类,它至少包括:

  • 允许您从实数和虚数分量值构造复杂对象的构造函数,例如

(1,5)

  • 覆盖+运算符,以便您可以将两个复杂对象相加,返回新的复杂对象例如Complex(1,5)+ Complex(3,7) is Complex(4,12)
  • 类似于其他运算符

但首先,您需要了解复数背后的基本数学知识,以便能够编写运算符重载方法。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4348058

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档