版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、如有你有幫助,請購買下載,謝謝!#include#include #include #include #include #include#define EPS 1e-5 /定義精度常數(shù) using namespace std; /使用標(biāo)準(zhǔn)空間命名 std namespace NameCComplex /定義命名空間 NameCComplex class CComplex / 定義一個 CComplex 類 private: double Real,Image;public:CComplex(double real=0,double image=0) / 構(gòu)造函數(shù) Real=real;Image
2、=image;friend istream & operator(istream &is,CComplex &com); / 重載輸入 friend ostream & operator(CComplex &com); int operator(CComplex &com) / 重載運(yùn)算符 ,比較模的大小 if(mod()com.mod()return 1;elsereturn 0;int CComplex:operator(CComplex &com)if(mod()(istream &is,CComplex &com) / 重載輸入,可以輸入 a+bi 的形式 couts; / 用字符串的
3、形式接受復(fù)數(shù)int len=strlen(s); / 求出字符串的長度int n=0,sign=1;/n 為當(dāng)前從字符串中提取出來的數(shù)字,初始化為0;sign 是難道符號,初始化為正com.Image=com.Real=0;for(int k=0;klen;k+) / 判斷接受的字符串是否合法 if(sk 9) & (sk!=+ & sk!=- & sk!=i)couterrorendl;return is; / 錯誤,輸出出錯信息并返回 for(k=0;klen;) / 順序識別字符串中各字符if(n!=0 &(sk=-|sk=+) / 當(dāng)前字符是否是符號位 com.Real=sign*n;
4、/是符號位,且 n!=0 ,即 n 已被賦值,表明當(dāng)前讀取的是虛部的符號 n=0; /將原 n*sign 值賦給實(shí)部,將 n 清零,準(zhǔn)備接受虛部的值 if(sk=-) / 當(dāng)前字符為負(fù)號sign=-1;k+; / 給符號標(biāo)志賦值if(sk=+) / 當(dāng)前字符為正號sign=1;k+; / 給符號標(biāo)志賦值if(sk=i) / 當(dāng)前字符為 Iif(k!=len-1)/判斷字符T是否為字符串中作后一個字符cout=0 & sk=9)/當(dāng)前字符在09之間,將數(shù)字字符轉(zhuǎn)換成數(shù)字?jǐn)?shù)值 n=n*10+sk-0; k+; if(slen-1!=i & n!=0) /如果最后一個字符不是 I ,表示復(fù)數(shù)對象內(nèi)只
5、有實(shí)部,沒有虛部 com.Real=n*sign;return is;ostream & operator(ostream &os,CComplex &com) / 重載輸入 if(fabs(com.Image)EPS) / 如果虛部為 0 oscom.Real; / 只輸出實(shí)部 else if(fabs(com.Real)EPS) / 如果實(shí)部為 0 oscom.Image0) oscom.Real+com.Imagei; elseoscom.Realcom.Imagei; / 虛部為正 return os;CComplex CComplex:operator+(CComplex &com)
6、 / 加法重載 CComplex sum; sum.Real=Real+com.Real; / 實(shí)部相加 sum.Image=Image+com.Image; / 虛部相加 return sum;CComplex CComplex:operator*(CComplex &com) / 乘法重載 CComplex multi; multi.Real=Real*com.Real-Image*com.Image; / 乘積實(shí)部 multi.Image=Real*com.Image+Image*com. Real; / 乘積虛部 return multi;CComplex CComplex:opera
7、tor-(CComplex &com) / 減法重載 CComplex sub;sub.Real=Real-com.Real;sub.Image=Image-com.Image; return sub;CComplex CComplex:operator+=(CComplex &com) / 重載加法賦值 Real=Real+com.Real;Image=Image+com.Image;return *this;CComplex CComplex:operator-=(CComplex &com) / 重載減法賦值 Real=Real-com.Real;Image=Image-com.Imag
8、e;return *this;CComplex CComplex:operator*=(CComplex &com) / 重載乘法賦值 double nReal=Real*com.Real-Image*com.Image;double nImage=Real*com.Image+Image*com.Real;Real=nReal;Image=nImage;return *this;int CComplex:operator=(CComplex &com) / 重載等于if(Real=com.Real & Image=com.Image)return 1;elsereturn 0;void Te
9、st(void) / 測試函數(shù)user.nTest+;cout共10道題,做100以內(nèi)的加減運(yùn)算,滿分100分:n;double real1,real2,image1,image2,real3,real4,image3,image4;CComplex answer,temp;int score=0;char op;for(int i=0;i=9;i+)/為復(fù)數(shù)產(chǎn)生隨機(jī)值 real1=rand()%200-100;image1=rand()%200-100; real2=rand()%200-100;image2=rand()%200-100;CComplex a(real1,image1),b
10、(real2,image2); real3=rand()%20-10;image3=rand()%20-10;real4=rand()%20-10;image4=rand()%20-10;CComplex c(real3,image3),d(real4,image4); op=rand()%3; / 產(chǎn)生隨機(jī)加減乘法運(yùn)算的三個值 switch(op)case 0:answer=a+b;couta加上b等于”;break;case 1:answer=a-b;couta減去b等于;break;case 2:answer=c*d;coutc乘以dtemp; / 輸入用戶計(jì)算值if(answer=te
11、mp) / 比較用戶計(jì)算值score+=10;elsecout 此題做錯了 n;cout 正確答案為 :answerendl;cout 你的最后得分是 :scoreendl;if(user.nTest=3)user.alAve=0; user.dlScoreuser.nTest-1=score;for(int i=0;iuser.nTest;i+)user.alAve+=user.dlScorei; user.alAve=user.alAve/user.nTest;elseuser.dlScore0=user.dlScore1;user.dlScore1=user.dlScore2; user
12、.dlScore2=score;for(i=0,user.alAve=0;i3;i+)user.alAve+=user.dlScorei;user.alAve=user.alAve/3;cout 請按任意鍵繼續(xù) n;cout.flush();cin.get();cin.get();void Add() / 復(fù)數(shù)加法運(yùn)算函數(shù)user.nAdd+;CComplex num1,num2,sum,Zero(0,0);cout 加法計(jì)算 n 最少輸入兩個復(fù)數(shù) ,并且以 0 結(jié)束 n; coutnum1;coutnum2; sum=num1+num2; coutnum1;int i=4;while(!(n
13、um1=Zero) sum=sum+num1; cout 第 inum1; i+;cout 加法結(jié)果是 :sumendl;cout 請按任意鍵繼續(xù) n;cout.flush();cin.get();cin.get();void Sub() / 復(fù)數(shù)減法預(yù)算函數(shù)user.nSub+;CComplex num1,num2,sub,Zero(0,0);cout 最少輸入兩個復(fù)數(shù),并且以 0 結(jié)束 n; coutnum1;coutnum2;sub=num1-num2;coutnum1;int i=4;while(!(num1=Zero)sub=sub-num1;cout 第 inum1;i+;cout
14、 減法結(jié)果是 :subendl;cout 請按任意鍵繼續(xù) n;cout.flush();cin.get();cin.get();void Mul() / 復(fù)數(shù)乘積函數(shù)user.nMul+;CComplex num1,num2,mul,Zero(0,0);cout 乘法計(jì)算 n 最少輸入兩個復(fù)數(shù) ,并且以零結(jié)束 n; coutnum1;coutnum2; mul=num1*num2;coutnum1;int i=4;while(!(num1=Zero)mul*=num1;cout 第 inum1;i+;cout 乘法結(jié)果是 :mulendl;coutnum1;+num1; cout 自加的結(jié)果為
15、 num1endl; coutnum1;-num1;cout 自減的結(jié)果為 num1endl; cout 按任意鍵結(jié)束 n;cout.flush(); cin.get(); cin.get();void compare() / 兩復(fù)數(shù)比較函數(shù)CComplex num1,num2; cout 輸入兩個復(fù)數(shù) n; coutnum1;coutnum2;if(num1=num2) coutnum2)coutnum1 的模大于 num2 的模 n; else if(num1num2)coutnum2 的模大于 num1 的模 n; elsecout 這兩個復(fù)數(shù)的模相等 n; cout 按任意鍵繼續(xù) n;
16、cin.get();cin.get();void userprint() / 輸出用戶信息函數(shù)coutuser.szName 使用的次數(shù)為 :user.nTimeendl;cout 其中 :t 加法的次數(shù) :user.nAddt 減法的次數(shù) :user.nSubt 乘法的次 數(shù):user. nMu le ndl;coutt 測試次數(shù) :user.nTestt 平均成績 :user.alAveendl;void Login() / 當(dāng)前用戶信息函數(shù)char szName20;cout 請輸入您的姓名 :; cin.getline(szName,20);ifstream infile;User u
17、ser1;infile.open(user.dat,ios:binary|ios:in);if(!infile)cout 沒有原始記錄文件,您是第一個用戶 !n; strcpy(user.szName,szName);user.nTest+;return;infile.read(char *)&user1,sizeof(User);while(!infile.eof() if(strcmp(user1.szName,szName)=0)user=user1;user.nTime+;cout 歡迎您再次使用復(fù)數(shù)計(jì)算器 !;userprint();cin.get();infile.close();
18、return;infile.read(char *) &user1,sizeof(User);cout 歡迎您再次使用復(fù)數(shù)計(jì)算器 !; strcpy(user.szName,szName);user.nTime+;infile.close();return;void SaveFile() / 用戶資料保存函數(shù)userprint();fstream file;User user1;file.open(user.dat,ios:binary|ios:in|ios:out);if(!file)cout 文件打開錯誤,不能進(jìn)行更新 !n;return;file.seekp(0,ios:beg);whi
19、le(!file.eof()file.read(char *)&user1,sizeof(User);if(strcmp(user1.szName,user.szName)=0)file.seekp(-(sizeof(User),ios:cur);file.write(char *)&user,sizeof(User);file.close();return;file.close();fstream outfile;outfile.open(user.dat,ios:binary|ios:app);outfile.write(char *)&user,sizeof(User);outfile.
20、close();return;using namespace NameCComplex;int main(void) / 主函數(shù)開始srand(time(NULL); / 初始化隨機(jī)數(shù) “種子 ”語句Login(); / 當(dāng)前用戶信息函數(shù)char strChoise20; / 定義字符串名dosystem(cls);coutt 這是一個簡單的復(fù)數(shù)計(jì)算器程序, 可以實(shí)現(xiàn)以下功能, 請按對應(yīng)的按鍵 (1-7)nnn; coutt=MENU=n;coutt1: 多復(fù)數(shù)加法,以 0 結(jié)束 n;coutt2: 多復(fù)數(shù)減法,以 0 結(jié)束 n;coutt3: 測試 100 以內(nèi)的復(fù)數(shù)加減乘法運(yùn)算, 1 次測試 10 道題
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 南寧市天桃實(shí)驗(yàn)學(xué)校2024 年秋季學(xué)期期中測試七年級歷史試卷
- 30種壽司的制作方法(有圖片)資料
- 計(jì)算機(jī)網(wǎng)絡(luò)應(yīng)用技術(shù)
- 《接觸網(wǎng)施工》課件 4.5.2 拉出值調(diào)整
- 全新升級的2024版辦公自動化培訓(xùn)課件:事半功倍的秘訣
- 2024春夏秋冬服裝搭配指南
- 人教部編版《道德與法治》二年級上冊第7課《我是班級值日生》精美課件(第1課時)
- 河南省商丘市(2024年-2025年小學(xué)五年級語文)統(tǒng)編版課后作業(yè)((上下)學(xué)期)試卷及答案
- 2024年20加減法課件:激發(fā)學(xué)習(xí)興趣的秘訣
- 自然資源使用權(quán)賬務(wù)處理實(shí)例-記賬實(shí)操
- 新課標(biāo)-人教版數(shù)學(xué)六年級上冊第四單元《比》單元教材解讀
- XML期末大作業(yè)實(shí)驗(yàn)報(bào)告
- 部編版道德與法治 四年級上冊 單元作業(yè)設(shè)計(jì)《為父母分擔(dān)》
- 第一章-教育及其本質(zhì)
- 中國女性生理健康白皮書
- 天然氣巡檢記錄表
- 甲苯磺酸瑞馬唑侖臨床應(yīng)用
- 民法典講座-繼承篇
- 外包施工單位入廠安全培訓(xùn)(通用)
- 糖尿病健康知識宣教課件
- 客戶接觸點(diǎn)管理課件
評論
0/150
提交評論