C++ 复数运算
【现场实战追-女孩课-程】【Q:1О⒈6.x.⒐⒌2б】 完成复数类的运算符重载函数,包括: 基本算术运算(+、-、*、-、=)
自增自减运算(前置++、后置++、前置–、后置–) 流运算符( 、)
z=a+bi(a,b均为实数)的数称为复数,其中a称为实部,b称为虚部,i称为虚数单位。
运算法则:
加法: (a+bi)+(c+di)=(a+c)+(b+d)i 减法:(a+bi)-(c+di)=(a-c)+(b-d)i
乘法:(a+bi)(c+di)=ac+adi+bci+bdi2 = (ac-bd)+(bc+ad)i 除法:(a+bi)-(c+di)=(ac+bd)-(c2+d2) +((bc-ad)-(c2+d2))i 由上面题目得知,该复数需要运用到重载函数。所以先写一个.h头文件,
如下Plural.h文件 #pragma once #include iostream using namespace std; class Plural {
Plural(double x = 0, double y = 0) { before = x;
after = y; --基本算术运算
friend Plural operator + (const Plural, const Plural); friend Plural operator - (const Plural, const Plural); friend Plural operator * (const Plural, const Plural); friend Plural operator - (const Plural, const Plural); Plural operator = (const Plural); --自增自减运算
Plural operator ++();--前置++ Plural operator ++(int);--后置++ Plural operator --();--前置-- Plural operator --(int);--后置-- --流运算符( 、)
friend ostream operator (ostream output, Plural); friend istream operator (istream input, Plural); private:
double before, after;
然后创建一个.cpp文件(要和.h文件同名)。 如下Plural.cpp文件
#include \获取头文件
Plural operator + (const Plural a, const Plural b) { return Plural(a.before + b.before, a.after + b.after);
Plural operator - (const Plural a, const Plural b) { return Plural(a.before - b.before, a.after - b.after); Plural operator * (const Plural a, const Plural b) { Plural coud;
--(ac - bd) + (bc + ad)i
coud.before = a.before * b.before - a.after*b.after; coud.after = a.after*b.before + a.before * b.after; return coud;
Plural operator -(const Plural a, const Plural b) { Plural coud;
--(ac + bd) - (c2 + d2) + ((bc - ad) - (c2 + d2))i coud.before
=
((a.before*b.before)+(a.after*b.after))-((b.before*b.before)+(b.after*b.after));
coud.after
=
((a.after*b.before)-(a.before*b.after))-((b.before*b.before)+(b.after*b.after));
return coud; --前置++
Plural Plural:: operator++() { return Plural(++before, ++after); --后置++
Plural Plural:: operator++(int) { return Plural(before++, after++); --前置--
Plural Plural:: operator--() { return Plural(--before, --after); --后置--
Plural Plural::operator--(int) { return Plural(before--, after--);
Plural Plural :: operator = (const Plural l) { if (this!=l) before = l.before; after = l.after; return *this; --流运算符
ostream operator(ostream output, Plural ary) { return output \istream operator (istream input, Plural ary) { return input ary.before ary.after; 最后在main.cpp文件中写入定义和操作值 main.cpp如下: #include \int main()
Plural a, b, c;
cout \cout \运算符+:\cout \运算符-:\cout \运算符*:\cout \运算符-:\++a, ++b;
cout \前置++: a = \a++, b++;
cout \后置++: a = \--a, --b;
cout \前置--: a = \a--, b--;
cout \后置--: a = \演示效果如下:
四元数的矢量部分可以用外积提取出来,就象用点积分离标量那样: Complex operator+(Complex c1, Complex c2) {
此时,重载的是全局操作符,需要把一个操作符函数(类似于全局函数)声明为类的友元。
47 return this.a+\
DivisionException::DivisionException(string
message,
MyComplex divident, MyComplex divisor) :runtime_error(message)
Complex Complex ::operator+=(const Complex c)--加上自身 Output()--初始条件:复数已经存在, --操作结果:以复数形式输出复数到屏幕上
return
MyComplex(a_
+
secondMyComplex.a_,
b_
+
secondMyComplex.b_);
创建复数类。然后重载流操作运算符,能够执行输入输出(10分) Complex operator +=(const Complex c2)
复 数 的 运 算 法 则( 2 0 2 0)



