我在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加到每行的第二个值上吗?这似乎太容易了。任何方向都将不胜感激。(顺便说一句,我不想找任何人帮我做作业……可以只使用一些输入)
发布于 2010-12-04 01:21:36
在我看来,重点是演示类操作重载,所以我认为你的想法是制作一个类复合体,它包含关于实数和虚数的信息(I表示它是虚数)。在您自己操作的运算符覆盖中处理复数之间的各种操作。
一旦你有了它并且你看到它工作了(创建一个静态测试方法,它执行各种操作并将结果打印到屏幕上),然后担心使用那个类来处理输入,因为解析输入本身就是另一项任务。有时候,把问题分成更小的问题要比同时做这两件事简单得多。
希望这能有所帮助。祝好运!
发布于 2010-12-04 01:24:55
他们喜欢成对的值:
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.
发布于 2010-12-04 01:27:33
您需要设计一个名为Complex的类,它至少包括:
(1,5)
但首先,您需要了解复数背后的基本数学知识,以便能够编写运算符重载方法。
https://stackoverflow.com/questions/4348058
复制相似问题