程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C >> 關於C >> 實驗項目2——復數四則運算

實驗項目2——復數四則運算

編輯:關於C

實驗內容
[問題描述]
設計實現一個可進行復數運算的演示程序。
[基本要求]
實現下列六種基本運算:
1) 由輸入的實部和虛部生成一個復數;
2) 兩個復數求和;
3) 兩個復數求差;
4) 兩個復數求積;
5) 從已知復數中分離出實部;
6) 從已知復數中分離出虛部;
運算結果以相應的復數或實數的表示形式顯示。
【代碼】
#include<iostream>
using namespace std;
template <class Elem> class Complex
{
private:
Elem reality;
Elem falsehood;
public:
Complex(Elem r,Elem f)
{
reality=r;
falsehood=f;
}

Complex operator + (const Complex& c1)//初始條件:已經存在兩個復數;
//操作結果:將兩個復數的實部和虛部分別進行向加得到一個新的復數
{
return Complex(reality+c1.reality,falsehood+c1.falsehood);
}

Complex operator - (const Complex& c1)//初始條件:已經存在兩個復數;
//操作結果:將兩個復數的實部和虛部分別進行向減得到一個新的復數
{
return Complex(reality-c1.reality,falsehood-c1.falsehood);
}

Complex operator * (const Complex& c1)// 初始條件:已經存在兩個復數;
//操作結果:按照復數乘法規則將兩個復數的實部相乘結果減去兩個復數虛部相乘結果為新生成復數的實部;
//將兩個復數的虛部和實部交叉相乘再相加的結果作為新生成復數的虛部。
{
return Complex(reality*c1.reality-falsehood*c1.falsehood,reality*c1.falsehood+falsehood*c1.reality);
}

Complex operator/(const Complex& c1)//重載操作符/
{
if(falsehood!=0)
return Complex((reality * c1.reality + falsehood + c1.falsehood)/(c1.reality*c1.reality +                c1.falsehood * c1.falsehood),(falsehood * c1.reality - reality * c1.falsehood) /                        (c1.reality * c1.reality + c1.falsehood * c1.falsehood));
else
cout<<"分母不能為0,請重新輸入"<<endl;
}

Elem Reality()//初始條件:復數已經存在;
//操作結果:返回復數的實部;
{
return reality;
}

Elem Falsehood()// 初始條件:復數已經存在;
//操作結果:返回復數的虛部
{
return falsehood;
}

void Conjugate()//求共轭復數
{
falsehood=-falsehood;
}

void Output()//初始條件:復數已經存在,
//操作結果:以復數形式輸出復數到屏幕上
{
if(falsehood>0)
{
cout<<"("<<reality<<"+"<<falsehood<<"i"<<")"<<endl;
}
else
cout<<"("<<reality<<falsehood<<"i"<<")"<<endl;
}
};
int main() //測試
{
Complex<float> c1(1,2);
Complex<float> c2(2,3);
cout<<"測試結果:"<<endl;
cout<<"兩個復數分別為:(1+2i)和(2+3i)"<<endl;
cout<<"(1+2i)+(2+3i)=";
(c1+c2).Output();
cout<<"\n(1+2i)-(2+3i)=";
(c1-c2).Output();
cout<<"\n(1+2i)*(2+3i)=";
(c1*c2).Output();
cout<<"\n(1+2i)/(2+3i)=";
(c1/c2).Output();
cout<<"\nc1的實部是:"<<c1.Reality()<<endl;
cout<<"\nc1的虛部是:"<<c1.Falsehood()<<endl;
cout<<"\nc2的實部是:"<<c2.Reality()<<endl;
cout<<"\nc2的虛部是:"<<c2.Falsehood()<<endl;
cout<<"\nc1的共轭復數是:";
c1.Conjugate();
c1.Output();
cout<<"\nc2的共轭復數是:";
c2.Conjugate();
c2.Output();
system("pause");
return 0;
}
注:以上內容僅供參考,如有問題請指正。


作者“心海新航”

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved