復(fù)數(shù)計算器-實驗報告_第1頁
復(fù)數(shù)計算器-實驗報告_第2頁
復(fù)數(shù)計算器-實驗報告_第3頁
復(fù)數(shù)計算器-實驗報告_第4頁
復(fù)數(shù)計算器-實驗報告_第5頁
已閱讀5頁,還剩14頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

中南大學(xué)高級程序設(shè)計實踐〔C++〕課程設(shè)計報告題目復(fù)數(shù)計算器學(xué)生姓名指導(dǎo)教師陳麗萍學(xué)院信息科學(xué)與工程學(xué)院專業(yè)班級通信工程1301班完成時間2023年7月5日第一章需求分析與程序設(shè)計1.1需求分析1.1.1程序設(shè)計的目的與任務(wù)1.復(fù)習(xí)和穩(wěn)固C++語言的根底知識,進(jìn)一步加深對C++語言的理解和掌握。2.為學(xué)生提供獨立實踐的時機(jī),將課本上的理論知識和實際有機(jī)的結(jié)合起來,鍛煉學(xué)生獨立分析問題、解決問題、查閱資料以及自學(xué)能力。3.學(xué)習(xí)和掌握C++程序設(shè)計方法以及上機(jī)調(diào)試技巧,為今后學(xué)習(xí)其它專業(yè)課程打好根底。4.在程序?qū)崿F(xiàn)過程中,需利用面向?qū)ο蟪绦蛟O(shè)計理論的根底知識,充分表達(dá)出C++語言關(guān)于類、繼承、封裝與多態(tài)等核心概念,每一個類應(yīng)包含數(shù)據(jù)成員和成員函數(shù),以實現(xiàn)預(yù)期的功能,解決實際問題。1.1.2“復(fù)數(shù)計算器〞程序所能實現(xiàn)的功能1.建立實數(shù)類、復(fù)數(shù)類,復(fù)數(shù)類由實數(shù)類公有繼承而來。2.實現(xiàn)實數(shù)、復(fù)數(shù)信息的初始化。3.通過選擇結(jié)構(gòu)和調(diào)用相關(guān)函數(shù)實現(xiàn)實數(shù)的相關(guān)運算,包括:兩個實數(shù)間的加、減、乘、除和一個實數(shù)的自增、自減、求平方、二次方根等運算。4.通過選擇結(jié)構(gòu)和調(diào)用相關(guān)函數(shù)實現(xiàn)復(fù)數(shù)的相關(guān)運算,包括:兩個復(fù)數(shù)間的加、減、乘、除、求兩個復(fù)數(shù)的夾角和一個復(fù)數(shù)的取模、求平方、求共軛復(fù)數(shù)、求單個復(fù)數(shù)的向量角等運算。5.通過調(diào)用相關(guān)函數(shù)實現(xiàn)實數(shù)、復(fù)數(shù)信息的輸出,顯示在顯示屏上。6.通過屢次運用選擇和循環(huán)結(jié)構(gòu)實現(xiàn)對實數(shù)、復(fù)數(shù)運算的選擇,在選擇了實數(shù)或復(fù)數(shù)運算的前提下,再實現(xiàn)對各種運算的選擇,運算結(jié)束后還可以選擇繼續(xù)實現(xiàn)其它運算或退出程序。1.2程序設(shè)計1.2.1概要設(shè)計1.系統(tǒng)中的各個實體及它們之間的關(guān)系系統(tǒng)中的實體是實數(shù)類對象和復(fù)數(shù)類對象,它們的關(guān)系是復(fù)數(shù)類對象所屬的類是由實數(shù)類對象所屬的類公有派生而來的。2.系統(tǒng)的類層次程序中建立了兩個類,分別是實數(shù)類、復(fù)數(shù)類,復(fù)數(shù)類是由實數(shù)類公有派生而來的。3.主程序的流程以及各程序模塊之間的層次(調(diào)用)關(guān)系首先從鍵盤輸入數(shù)字1或2或0,輸入不同數(shù)字那么進(jìn)入不同的并列的小程序模塊。假設(shè)輸入1,那么進(jìn)行實數(shù)相關(guān)運算,再輸入1-8選擇具體運算,此時會調(diào)用實數(shù)類中的相關(guān)成員函數(shù),運算出正確結(jié)果,運算結(jié)束后,那么會進(jìn)入循環(huán)結(jié)構(gòu),進(jìn)行下一次選擇及運算。假設(shè)輸入2,那么進(jìn)行復(fù)數(shù)相關(guān)運算,再輸入1-9選擇具體運算,此時會調(diào)用復(fù)數(shù)類中的相關(guān)成員函數(shù),運算出正確結(jié)果,運算結(jié)束后,那么會進(jìn)入循環(huán)結(jié)構(gòu),進(jìn)行下一次選擇及運算。假設(shè)輸入0,那么將退出復(fù)數(shù)計算器系統(tǒng)。1.2.2詳細(xì)設(shè)計1.類層次中各個類的描述實數(shù)類數(shù)據(jù)成員〔都屬于保護(hù)數(shù)據(jù)成員〕:doublereal成員函數(shù)〔都屬于公有成員函數(shù)〕:構(gòu)造函數(shù):Simple()Simple(doubler) 相加函數(shù):doublejia(Simple&s2)相減函數(shù):doublejian(Simple&s2)相乘函數(shù):doublecheng(Simple&s2)相除函數(shù):doublechu(Simple&s2)自加函數(shù):doublezijia()自減函數(shù):doublezijian()平方函數(shù):doublepingfang()二次方根函數(shù):doublekaifang()輸入函數(shù):voidinput()輸出函數(shù):doubleoutput()復(fù)數(shù)類數(shù)據(jù)成員〔都屬于私有數(shù)據(jù)成員〕:doubleimag成員函數(shù)〔都屬于公有成員函數(shù)〕:構(gòu)造函數(shù):Complex()Complex(doubler,doublei)重載“+〞函數(shù):Complexoperator+(Complex&c2)重載“-〞函數(shù):Complexoperator-(Complex&c2)重載“/〞函數(shù):Complexoperator*(Complex&c2)重載“*〞函數(shù):Complexoperator/(Complex&c2)輸入函數(shù):voidsetnumber()取模函數(shù):doublequmo()平方函數(shù):Complexpf()取共軛復(fù)數(shù)函數(shù):Complexgonge()求向量角函數(shù):doublexiangliangjiao()求夾角函數(shù):doublejiajiao(Complex&c2)重載“<<〞函數(shù):friendostream&operator<<(ostream&output,Complex&c)類中各個成員函數(shù)的定義實數(shù)類中成員函數(shù)定義:Simple(){doublereal=0.0;}//構(gòu)造函數(shù)Simple(doubler){real=r;}//構(gòu)造函數(shù)doublejia(Simple&s2)//兩個實數(shù)相加函數(shù) { doublea; a=real+s2.real; returna; }doublejian(Simple&s2)//兩個實數(shù)相減函數(shù) { doublea; a=real-s2.real; returna; }doublecheng(Simple&s2)//兩個實數(shù)相乘函數(shù) { doublea; a=(real)*(s2.real); returna; }doublechu(Simple&s2)//兩個實數(shù)相除函數(shù) { doublea; a=(real)/(s2.real); returna; }doublezijia()//一個實數(shù)自加函數(shù) { doublea; a=++real; returna; }doublezijian()//一個實數(shù)自減函數(shù) { doublea; a=--real; returna; }doublepingfang()//一個實數(shù)的平方函數(shù) { doublea; a=(real)*(real); returna; }doublekaifang()//一個實數(shù)的二次方根函數(shù) { doublea; a=sqrt(real); returna; }voidinput()//實數(shù)的輸入函數(shù) { cout<<"請輸入一個實數(shù):"<<""; cin>>real; } doubleoutput()//實數(shù)的輸出函數(shù) { returnreal; }復(fù)數(shù)類中成員函數(shù)定義:Complex(){real=0.0;imag=0.0;}//構(gòu)造函數(shù)Complex(doubler,doublei){real=r;imag=i;}//構(gòu)造函數(shù)voidsetnumber()//復(fù)數(shù)的輸入函數(shù) { cout<<"請輸入一個復(fù)數(shù)的實部:"<<""; cin>>real; cout<<"請輸入一個復(fù)數(shù)的虛部:"<<""; cin>>imag; }Complexoperator+(Complex&c2)//重載"+"用于兩復(fù)數(shù)相加 { Complexc; c.real=real+c2.real; c.imag=imag+c2.imag; returnc; }Complexoperator-(Complex&c2)//重載"-"用于兩復(fù)數(shù)相減 { Complexc; c.real=real-c2.real; c.imag=imag-c2.imag; returnc; }Complexoperator*(Complex&c2)//重載"*"用于兩復(fù)數(shù)相乘 { Complexc; c.real=real*c2.real-imag*c2.imag; c.imag=real*c2.imag+imag*c2.real; returnc; }Complexoperator/(Complex&c2)//重載"/"用于兩復(fù)數(shù)相除 { Complexc;c.real=(real*c2.real+imag*c2.imag)/(c2.real*c2.real+c2.imag*c2.imag);c.imag=(imag*c2.real-real*c2.imag)/(c2.real*c2.real+c2.imag*c2.imag); returnc; }doublequmo()//一個復(fù)數(shù)取模函數(shù) { doublea; a=sqrt(real*real+imag*imag); returna; }Complexpf()//一個復(fù)數(shù)的平方函數(shù) { Complexc; c.real=real*real-imag*imag; c.imag=2*real*imag; returnc; }Complexgonge()//一個復(fù)數(shù)的共軛復(fù)數(shù)函數(shù) { Complexc; c.real=real; c.imag=0-imag; returnc; }doublexiangliangjiao()//單個復(fù)數(shù)的向量角函數(shù) { doublea; a=atan(imag/real)*57.295; returna; }doublejiajiao(Complex&c2)//兩個復(fù)數(shù)的夾角函數(shù) { doublea; a=fabs((atan(imag/real))*57.295-(atan(c2.imag/c2.real))*57.295returna; }friendostream&operator<<(ostream&output,Complex&c)//重載"<<"用于復(fù)數(shù)的輸出 { output<<c.real; if(c.imag>=0)output<<"+"; output<<c.imag<<"i"<<endl; returnoutput; }主程序和重要模塊的算法調(diào)試程序后,顯示屏?xí)@示文字提醒計算器使用者輸入數(shù)字0或1或2,使用者需根據(jù)提示輸入相關(guān)數(shù)據(jù)。局部相關(guān)程序代碼如下:cout<<"【歡送使用復(fù)數(shù)運算器】"<<endl;gg:cout<<"請輸入0或1或2"<<endl;cout<<"【0】退出復(fù)數(shù)計算器;"<<endl;cout<<"【1】進(jìn)行實數(shù)相關(guān)運算;"<<endl;cout<<"【2】進(jìn)行復(fù)數(shù)相關(guān)運算:"<<"";cin>>a;假設(shè)計算器使用者輸入1,那么選擇了實數(shù)的相關(guān)運算,系統(tǒng)會提示輸入數(shù)字1-8,1-8分別對應(yīng)兩個實數(shù)間的相加、相減、相乘、相除和一個實數(shù)的自加、自減、平方、二次方根等運算,使用者需根據(jù)提示輸入1-8,再從鍵盤輸入一個或兩個實數(shù),按回車鍵后即可得到正確結(jié)果。局部相關(guān)程序代碼如下:if(a==1) { cout<<"1.相加2.相減3.相乘4.相除〔兩個實數(shù)間的運算〕"<<endl; cout<<"5.自加6.自減7.平方8.二次方根〔一個實數(shù)的運算〕"<<endl; cout<<"輸入數(shù)字1-8進(jìn)行選擇:"<<""; cin>>b; if(b==1||b==2||b==3||b==4) { cout<<"請輸入2個實數(shù):"<<""<<""<<endl; s1.input(); s2.input(); cout<<"第1個實數(shù)是:"<<s1.output()<<endl; cout<<"第2個實數(shù)是:"<<s2.output()<<endl; switch(b) { case1:cout<<"相加結(jié)果是:"<<s1.jia(s2)<<endl;break; case2:cout<<"相減結(jié)果是:"<<s1.jian(s2)<<endl;break; case3:cout<<"相乘結(jié)果是:"<<s1.cheng(s2)<<endl;break; case4:cout<<"相除結(jié)果是:"<<s1.chu(s2)<<endl;break; default:cout<<"error"<<endl;break; } cout<<endl; } if(b==5||b==6||b==7||b==8) { cout<<"請輸入1個實數(shù):"<<""<<endl; s1.input(); cout<<"輸入的實數(shù)是:"<<s1.output()<<endl; switch(b) { case5:cout<<"自加結(jié)果是:"<<s1.zijia()<<endl;break; case6:cout<<"自減結(jié)果是:"<<s1.zijian()<<endl;break; case7:cout<<"平方結(jié)果是:"<<s1.pingfang()<<endl;break; case8:cout<<"二次方根是:"<<s1.kaifang()<<endl;break; default:cout<<"error"<<endl;break; } cout<<endl; } gotogg; }假設(shè)計算器使用者輸入2,那么選擇了復(fù)數(shù)的相關(guān)運算,系統(tǒng)會提示輸入數(shù)字1-9,1-9分別對應(yīng)兩個復(fù)數(shù)間的相加、相減、相乘、相除、夾角和一個復(fù)數(shù)的取模、平方、向量角、共軛復(fù)數(shù)等運算,使用者需根據(jù)提示輸入1-9,再通過從鍵盤鍵入分別輸入實部和虛部輸入一個或兩個復(fù)數(shù),按回車鍵后即可得到正確結(jié)果。局部相關(guān)程序代碼如下:if(a==2) { cout<<"1.相加2.相減3.相乘4.相除5.兩個復(fù)數(shù)的夾角〔兩個復(fù)數(shù)間的運算〕"<<endl; cout<<"6.取模7.平方8.一個復(fù)數(shù)的向量角9.共軛復(fù)數(shù)〔一個復(fù)數(shù)的運算〕"<<endl; cout<<"輸入數(shù)字1-9進(jìn)行選擇:"<<""; cin>>b; if(b==1||b==2||b==3||b==4||b==5) { cout<<"請輸入2個復(fù)數(shù):"<<""<<""<<endl; c1.setnumber(); c2.setnumber(); cout<<"第1個復(fù)數(shù)是:"<<c1; cout<<"第2個復(fù)數(shù)是:"<<c2; switch(b) { case1:cout<<"相加結(jié)果是:"<<c1+c2<<endl;break; case2:cout<<"相減結(jié)果是:"<<c1-c2<<endl;break; case3:cout<<"相乘結(jié)果是:"<<c1*c2<<endl;break; case4:cout<<"相除結(jié)果是:"<<c1/c2<<endl;break; case5:cout<<"這兩個復(fù)數(shù)的夾角是:"<<c1.jiajiao(c2)<<"°"<<endl;break; default:cout<<"error"<<endl;break; } cout<<endl; } if(b==6||b==7||b==8||b==9) { cout<<"請輸入1個復(fù)數(shù):"<<""<<endl; c1.setnumber(); cout<<"輸入的復(fù)數(shù)是:"<<c1; switch(b) { case6:cout<<"取模結(jié)果是:"<<c1.qumo()<<endl;break;case7:cout<<"平方結(jié)果是:"<<c1.pf()<<endl;break; case8:cout<<"該復(fù)數(shù)的向量角是:"<<c1.xiangliangjiao()<<"°"<<endl;break; case9:cout<<"該復(fù)數(shù)的共軛復(fù)數(shù)是:"<<c1.gonge()<<endl;break; default:cout<<"error"<<endl;break; } cout<<endl; } gotogg; }假設(shè)計算器使用者輸入0,再按任意鍵后,即可退出復(fù)數(shù)計算器。此過程是通過運用if判斷語句和switch選擇語句而實現(xiàn)的。局部相關(guān)程序代碼如下:if(a==0) { cout<<"【謝謝使用!按任意鍵后,您將退出復(fù)數(shù)計算器】"<<endl; exit(0); }假設(shè)第一次計算器使用者輸入1或2且一次運算結(jié)束后,系統(tǒng)會再次提醒輸入0或1或2,即可進(jìn)行下一次運算;假設(shè)第一次計算器使用者輸入0,那么會退出系統(tǒng)。此過程是通過運用goto循環(huán)語句和if判斷語句而實現(xiàn)的。程序運行的流程圖〔鑒于程序中用到if判斷語句和switch循環(huán)語句,流程圖中會有較多分支,所以此流程圖將會以三局部的形式呈現(xiàn)〕從鍵盤輸入數(shù)字0或1或2從鍵盤輸入數(shù)字0或1或2輸入1輸入輸入1輸入2輸入03434退出程序退出程序圖1程序圖分圖1輸入1輸入數(shù)字輸入數(shù)字1-8876543321876543321調(diào)用1次實數(shù)輸入函數(shù),1次輸出函數(shù),1次二次方根函數(shù)調(diào)用1次實數(shù)輸入函數(shù),1次輸出函數(shù),1次平方函數(shù)調(diào)用1次實數(shù)輸入函數(shù),1次輸出函數(shù),1次相減函數(shù)調(diào)用調(diào)用1次實數(shù)輸入函數(shù),1次輸出函數(shù),1次二次方根函數(shù)調(diào)用1次實數(shù)輸入函數(shù),1次輸出函數(shù),1次平方函數(shù)調(diào)用1次實數(shù)輸入函數(shù),1次輸出函數(shù),1次相減函數(shù)調(diào)用1次實數(shù)輸入函數(shù),1次輸出函數(shù),1次自加函數(shù)調(diào)用2次實數(shù)輸入函數(shù),2次輸出函數(shù),1次相除函數(shù)調(diào)用2次實數(shù)輸入函數(shù),2次輸出函數(shù),1次相乘函數(shù)調(diào)用2次實數(shù)輸入函數(shù),2次輸出函數(shù),1次相減函數(shù)調(diào)用2次實數(shù)輸入函數(shù),2次輸出函數(shù),1次相加函數(shù)輸出結(jié)果輸出結(jié)果33圖2程序圖分圖2輸入2輸入數(shù)字輸入數(shù)字1-998765433219876543321調(diào)用1次復(fù)數(shù)輸入函數(shù),1次求共軛復(fù)數(shù)函數(shù)調(diào)用2次復(fù)數(shù)輸入函數(shù),1次復(fù)數(shù)相加函數(shù)調(diào)用2次復(fù)數(shù)輸入函數(shù),1次復(fù)數(shù)相減函數(shù)調(diào)用2次復(fù)數(shù)輸入函數(shù),1次求兩復(fù)數(shù)夾角函數(shù)調(diào)用調(diào)用1次復(fù)數(shù)輸入函數(shù),1次求共軛復(fù)數(shù)函數(shù)調(diào)用2次復(fù)數(shù)輸入函數(shù),1次復(fù)數(shù)相加函數(shù)調(diào)用2次復(fù)數(shù)輸入函數(shù),1次復(fù)數(shù)相減函數(shù)調(diào)用2次復(fù)數(shù)輸入函數(shù),1次求兩復(fù)數(shù)夾角函數(shù)調(diào)用2次復(fù)數(shù)輸入函數(shù),1次復(fù)數(shù)相乘函數(shù)調(diào)用1次復(fù)數(shù)輸入函數(shù),1次求單個復(fù)數(shù)向量角函數(shù)調(diào)用1次復(fù)數(shù)輸入函數(shù),1次復(fù)數(shù)平方函數(shù)調(diào)用1次復(fù)數(shù)輸入函數(shù),1次取模函數(shù)調(diào)用2次復(fù)數(shù)輸入函數(shù),1次復(fù)數(shù)相乘函數(shù)輸出結(jié)果輸出結(jié)果44圖3程序圖分圖3第二章調(diào)試與總結(jié)2.1調(diào)試分析與測試結(jié)果2.1.1調(diào)試過程中遇到的問題及解決方法1.調(diào)試出現(xiàn)錯誤調(diào)試過程中出現(xiàn)錯誤,不能正常運行,經(jīng)檢查后發(fā)現(xiàn)是代碼中包含的sqrt函數(shù),fabs函數(shù),atan函數(shù)沒有定義,在頭文件中加上#include<cmath>即可正常運行。2.運算結(jié)果不正確調(diào)試過程中,當(dāng)算一個復(fù)數(shù)的向量角時,算出的度數(shù)不對,經(jīng)認(rèn)真檢查后,發(fā)現(xiàn)是沒有將弧度轉(zhuǎn)化為度數(shù),只需在原始結(jié)果后乘57.295即可得到正確結(jié)果。當(dāng)算兩個復(fù)數(shù)的夾角時,有時運行結(jié)果出現(xiàn)負(fù)角,但兩個復(fù)數(shù)的夾角不可能是負(fù)的,經(jīng)仔細(xì)思考后,在原始結(jié)果前加fabs取絕對值,即可得到正確結(jié)果。3.循環(huán)結(jié)構(gòu)不恰當(dāng)調(diào)試過程中,剛開始每進(jìn)行一種運算后,就會退出系統(tǒng),假設(shè)想要進(jìn)行下一次運算,必須重新調(diào)試,這樣不太方便,最終經(jīng)過思考,我在main函數(shù)中參加了一個goto循環(huán)結(jié)構(gòu)和exit退出語句,有了這些修改后,在每次運算結(jié)束后,可以選擇繼續(xù)進(jìn)行下一次運算,或是退出系統(tǒng),這樣比擬方便。2.1.2測試結(jié)果〔鑒于許多運算功能原理相似,以下只列出局部功能的測試結(jié)果〕1.求兩個實數(shù)相乘的結(jié)果:求一個實數(shù)自減的結(jié)果求一個實數(shù)平方的結(jié)果:求一個實數(shù)的二次方根:求兩個復(fù)數(shù)相除的結(jié)果:求兩個復(fù)數(shù)的夾角:求一個復(fù)數(shù)的模:8.求一個復(fù)數(shù)的向量角:求一個復(fù)數(shù)的共軛復(fù)數(shù):2.2課程設(shè)計總結(jié)2.2.1課設(shè)總結(jié)在這次程序設(shè)計的過程中,我遇到了很多問題,同時也收獲了不少,成長了不少。一拿到題目我就非常緊張,害怕自己做不出來,焦慮的情緒讓我浪費了好多時間,這讓我懂得在生活中遇到問題時,要有良好的心態(tài),一定要鎮(zhèn)定自假設(shè),千萬不能驚慌失措。當(dāng)我花了好久,終于辛辛苦苦設(shè)計出了算法,編寫好程序,可是當(dāng)調(diào)試時,出現(xiàn)了很多問題,如:調(diào)試過程中出現(xiàn)錯誤,程序不能正常運行,經(jīng)認(rèn)真檢查和思考后發(fā)現(xiàn)是頭文件中缺少#include<cmath>;還有調(diào)試過程中,當(dāng)算一個復(fù)數(shù)的向量角時,算出的度數(shù)不對,經(jīng)認(rèn)真檢查后,發(fā)現(xiàn)是沒有將弧度轉(zhuǎn)化為度數(shù),只需在原始結(jié)果后乘57.295即可得到正確結(jié)果;當(dāng)算兩個復(fù)數(shù)的夾角時,有時運行結(jié)果出現(xiàn)負(fù)角,但兩個復(fù)數(shù)的夾角不可能是負(fù)的,經(jīng)仔細(xì)思考后,在原始結(jié)果前加fabs取絕對值,即可得到正確結(jié)果;還有調(diào)試過程中,剛開始每進(jìn)行一種運算后,就會退出系統(tǒng),假設(shè)想要進(jìn)行下一次運算,必須重新調(diào)試,這樣不太方便,最終經(jīng)過思考,我在main函數(shù)中參加了一個goto循環(huán)結(jié)構(gòu)和exit退出語句,有了這些修改后,在每次運算結(jié)束后,可以選擇繼續(xù)進(jìn)行下一次運算,或是退出系統(tǒng),這樣比擬方便?;仡^檢查錯誤,修改程序的過程,又讓我花費了好多時間和精力,這讓我知道做任何事都要有嚴(yán)謹(jǐn)?shù)膽B(tài)度,并考慮到結(jié)果。在完善程序的過程中,我也學(xué)會了如何快速尋找錯誤并改正,還讓我做任何事更有耐心。當(dāng)我遇到問題不能自己獨立解決時,我求助了同學(xué),這也讓我深刻懂得,在必要的時候我們可以求助他人,同樣可以得到好的結(jié)果,但大局部還是要靠自己的力量解決問題。在這次課程設(shè)計中,我設(shè)計了一個較大的程序后,我對書本上的理論知識有了更全面、深刻的理解,同時也鍛煉了我的動手能力、實踐能力、將課本知識運用到實際生活中的能力。雖然這次程序設(shè)計的過程很艱難,但最終我成功了,我覺得一切的努力都是值得的。第三章參考文獻(xiàn)[1]《C++程序設(shè)計》[2]《C++程序設(shè)計實驗上機(jī)與指導(dǎo)》第四章附錄#include<iostream.h>#include<string>#include<cmath>classSimple{protected: doublereal;public: Simple(){doublereal=0.0;}//構(gòu)造函數(shù) Simple(doubler){real=r;}//構(gòu)造函數(shù)doublejia(Simple&s2)//兩個實數(shù)相加函數(shù) {doublea;a=real+s2.real;returna;}doublejian(Simple&s2)//兩個實數(shù)相減函數(shù) { doublea; a=real-s2.real; returna; }doublecheng(Simple&s2)//兩個實數(shù)相乘函數(shù) { doublea; a=(real)*(s2.real); returna; }doublechu(Simple&s2)//兩個實數(shù)相除函數(shù) { doublea; a=(real)/(s2.real); returna; }doublezijia()//一個實數(shù)自加函數(shù) { doublea; a=++real; returna; }doublezijian()//一個實數(shù)自減函數(shù) { doublea; a=--real; returna; }doublepingfang()//一個實數(shù)的平方函數(shù) { doublea; a=(real)*(real); returna; }doublekaifang()//一個實數(shù)的二次方根函數(shù) { doublea; a=sqrt(real); returna; }voidinput()//實數(shù)的輸入函數(shù) { cout<<"請輸入一個實數(shù):"<<""; cin>>real; }doubleoutput()//實數(shù)的輸出函數(shù) { returnreal; }};classComplex:publicSimple{private: doubleimag;public: Complex(){real=0.0;imag=0.0;}//構(gòu)造函數(shù) Complex(doubler,doublei){real=r;imag=i;}//構(gòu)造函數(shù) voidsetnumber()//復(fù)數(shù)的輸入函數(shù) { cout<<"請輸入一個復(fù)數(shù)的實部:"<<""; cin>>real; cout<<"請輸入一個復(fù)數(shù)的虛部:"<<""; cin>>imag; }Complexoperator+(Complex&c2)//重載"+"用于兩復(fù)數(shù)相加 { Complexc; c.real=real+c2.real; c.imag=imag+c2.imag; returnc; }Complexoperator-(Complex&c2)//重載"-"用于兩復(fù)數(shù)相減 { Complexc; c.real=real-c2.real; c.imag=imag-c2.imag; returnc; }Complexoperator*(Complex&c2)//重載"*"用于兩復(fù)數(shù)相乘 { Complexc; c.real=real*c2.real-imag*c2.imag; c.imag=real*c2.imag+imag*c2.real; returnc; }Complexoperator/(Complex&c2)//重載"/"用于兩復(fù)數(shù)相除 { Complexc;c.real=(real*c2.real+imag*c2.imag)/(c2.real*c2.real+c2.imag*c2.imag);c.imag=(imag*c2.real-real*c2.imag)/(c2.real*c2.real+c2.imag*c2.imag); returnc; }doublequmo()//一個復(fù)數(shù)取模函數(shù) { doublea; a=sqrt(real*real+imag*imag); returna; }Complexpf()//一個復(fù)數(shù)的平方函數(shù) { Complexc; c.real=real*real-imag*imag; c.imag=2*real*imag; returnc; }Complexgonge()//一個復(fù)數(shù)的共軛復(fù)數(shù)函數(shù) { Complexc; c.real=real; c.imag=0-imag; returnc;}doublexiangliangjiao()//單個復(fù)數(shù)的向量角函數(shù) { doublea; a=atan(imag/real)*57.295; returna; }doublejiajiao(Complex&c2)//兩個復(fù)數(shù)的夾角函數(shù) { doublea; a=fabs((atan(imag/real))*57.295-(atan(c2.imag/c2.real))*57.295); returna; }friendostream&operator<<(ostream&output,Complex&c)//重載"<<"用于復(fù)數(shù)的輸出 { output<<c.real; if(c.imag>=0)output<<"+"; output<<c.imag<<"i"<<endl; returnoutput; }};intmain(){ Simples1,s2; Complexc1,c2; inta,b; cout<<"【歡送使用復(fù)數(shù)運算器】"<<endl;gg:cout<<"請輸入0或1或2"<<endl; cout<<"【0】退出復(fù)數(shù)計算器;"<<endl; cout<<"【1】進(jìn)行實數(shù)相關(guān)運算;"<<endl; cout<<"【2】進(jìn)行復(fù)數(shù)相關(guān)運算:"<<"";cin>>a;if(a==1) { cout<<"1.相加2.相減3.相乘4.相除〔兩個實數(shù)間的運算〕"<<endl; cout<<"5.自加6.自減7.平方8.二次方根〔一個實數(shù)的運算〕"<<endl; cout<<"輸入數(shù)字1-8進(jìn)行選擇:"<<""; cin>>b; if(b==1||b==2||b==3||b==4) { cout<<"請輸入2個實數(shù):"<<""<<""<<endl; s1.input(); s2.input(); cout<<"第1個實數(shù)是:"<<s1.output()<<endl; cout<<"第2個實數(shù)是:"<<s2.output()<<endl; switch(b) { case1:cout<<"相加結(jié)果是:"<<s1.jia(s2)<<endl;break; case2:cout<<"相減結(jié)果是:"<<s1.jian(s2)<<endl;break; case3:cout<<"相乘結(jié)果是:"<<s1.cheng(s2)<<endl;break; case4:cout<<"相除結(jié)果是:"<<s1.chu(s2)<<endl;break; default:cout<<"error"<<endl;break; } cout<<endl; } if(b==5||b==6||b==7||b==8) { cout<<"請輸入1個實數(shù):"<<""<<endl; s1.input(); cout<<"輸入的實數(shù)是:"<<s1.output()<<endl; switch(b) { case

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論