復(fù)數(shù)計(jì)算器實(shí)驗(yàn)報(bào)告_第1頁(yè)
復(fù)數(shù)計(jì)算器實(shí)驗(yàn)報(bào)告_第2頁(yè)
復(fù)數(shù)計(jì)算器實(shí)驗(yàn)報(bào)告_第3頁(yè)
復(fù)數(shù)計(jì)算器實(shí)驗(yàn)報(bào)告_第4頁(yè)
復(fù)數(shù)計(jì)算器實(shí)驗(yàn)報(bào)告_第5頁(yè)
已閱讀5頁(yè),還剩20頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、復(fù)數(shù)計(jì)算器中南大學(xué)高級(jí)程序設(shè)計(jì)實(shí)踐(C+)課程設(shè)計(jì)報(bào)告題 目 復(fù)數(shù)計(jì)算器 學(xué)生姓名 指導(dǎo)教師 陳麗萍 學(xué) 院 信息科學(xué)與工程學(xué)院 專業(yè)班級(jí) 通信工程1301班 完成時(shí)間 2014年7月5日 第一章 需求分析與程序設(shè)計(jì)1.1 需求分析 111程序設(shè)計(jì)的目的與任務(wù)1復(fù)習(xí)和鞏固C+語(yǔ)言的基礎(chǔ)知識(shí),進(jìn)一步加深對(duì)C+語(yǔ)言的理解和掌握。2為學(xué)生提供獨(dú)立實(shí)踐的機(jī)會(huì),將課本上的理論知識(shí)和實(shí)際有機(jī)的結(jié)合起來(lái),鍛煉學(xué)生獨(dú)立分析問(wèn)題、解決問(wèn)題、查閱資料以及自學(xué)能力。3學(xué)習(xí)和掌握C+程序設(shè)計(jì)方法以及上機(jī)調(diào)試技巧,為今后學(xué)習(xí)其它專業(yè)課程打好基礎(chǔ)。4在程序?qū)崿F(xiàn)過(guò)程中,需利用面向?qū)ο蟪绦蛟O(shè)計(jì)理論的基礎(chǔ)知識(shí),充分體現(xiàn)出C+語(yǔ)

2、言關(guān)于類、繼承、封裝與多態(tài)等核心概念,每一個(gè)類應(yīng)包含數(shù)據(jù)成員和成員函數(shù),以實(shí)現(xiàn)預(yù)期的功能,解決實(shí)際問(wèn)題。112“復(fù)數(shù)計(jì)算器”程序所能實(shí)現(xiàn)的功能 1建立實(shí)數(shù)類、復(fù)數(shù)類,復(fù)數(shù)類由實(shí)數(shù)類公有繼承而來(lái)。2實(shí)現(xiàn)實(shí)數(shù)、復(fù)數(shù)信息的初始化。3通過(guò)選擇結(jié)構(gòu)和調(diào)用相關(guān)函數(shù)實(shí)現(xiàn)實(shí)數(shù)的相關(guān)運(yùn)算,包括:兩個(gè)實(shí)數(shù)間的加、減、乘、除和一個(gè)實(shí)數(shù)的自增、自減、求平方、二次方根等運(yùn)算。4通過(guò)選擇結(jié)構(gòu)和調(diào)用相關(guān)函數(shù)實(shí)現(xiàn)復(fù)數(shù)的相關(guān)運(yùn)算,包括:兩個(gè)復(fù)數(shù)間的加、減、乘、除、求兩個(gè)復(fù)數(shù)的夾角和一個(gè)復(fù)數(shù)的取模、求平方、求共軛復(fù)數(shù)、求單個(gè)復(fù)數(shù)的向量角等運(yùn)算。5通過(guò)調(diào)用相關(guān)函數(shù)實(shí)現(xiàn)實(shí)數(shù)、復(fù)數(shù)信息的輸出,顯示在顯示屏上。6通過(guò)多次運(yùn)用選擇和循環(huán)結(jié)

3、構(gòu)實(shí)現(xiàn)對(duì)實(shí)數(shù)、復(fù)數(shù)運(yùn)算的選擇,在選擇了實(shí)數(shù)或復(fù)數(shù)運(yùn)算的前提下,再實(shí)現(xiàn)對(duì)各種運(yùn)算的選擇,運(yùn)算結(jié)束后還可以選擇繼續(xù)實(shí)現(xiàn)其它運(yùn)算或退出程序。1.2 程序設(shè)計(jì)121概要設(shè)計(jì) 1系統(tǒng)中的各個(gè)實(shí)體及它們之間的關(guān)系 系統(tǒng)中的實(shí)體是實(shí)數(shù)類對(duì)象和復(fù)數(shù)類對(duì)象,它們的關(guān)系是復(fù)數(shù)類對(duì)象所屬的類是由實(shí)數(shù)類對(duì)象所屬的類公有派生而來(lái)的。2系統(tǒng)的類層次程序中建立了兩個(gè)類,分別是實(shí)數(shù)類、復(fù)數(shù)類,復(fù)數(shù)類是由實(shí)數(shù)類公有派生而來(lái)的。3主程序的流程以及各程序模塊之間的層次(調(diào)用)關(guān)系首先從鍵盤(pán)輸入數(shù)字1或2或0,輸入不同數(shù)字則進(jìn)入不同的并列的小程序模塊。若輸入1,則進(jìn)行實(shí)數(shù)相關(guān)運(yùn)算,再輸入1-8選擇具體運(yùn)算,此時(shí)會(huì)調(diào)用實(shí)數(shù)類中的相關(guān)成

4、員函數(shù),運(yùn)算出正確結(jié)果,運(yùn)算結(jié)束后,則會(huì)進(jìn)入循環(huán)結(jié)構(gòu),進(jìn)行下一次選擇及運(yùn)算。若輸入2,則進(jìn)行復(fù)數(shù)相關(guān)運(yùn)算,再輸入1-9選擇具體運(yùn)算,此時(shí)會(huì)調(diào)用復(fù)數(shù)類中的相關(guān)成員函數(shù),運(yùn)算出正確結(jié)果,運(yùn)算結(jié)束后,則會(huì)進(jìn)入循環(huán)結(jié)構(gòu),進(jìn)行下一次選擇及運(yùn)算。若輸入0,則將退出復(fù)數(shù)計(jì)算器系統(tǒng)。122詳細(xì)設(shè)計(jì)1類層次中各個(gè)類的描述實(shí)數(shù)類數(shù)據(jù)成員(都屬于保護(hù)數(shù)據(jù)成員):double real成員函數(shù)(都屬于公有成員函數(shù)):構(gòu)造函數(shù):Simple() Simple(double r)相加函數(shù):double jia(Simple &s2) 相減函數(shù):double jian(Simple &s2)相乘函數(shù):dou

5、ble cheng(Simple &s2)相除函數(shù):double chu(Simple &s2)自加函數(shù):double zijia()自減函數(shù):double zijian()平方函數(shù):double pingfang()二次方根函數(shù):double kaifang()輸入函數(shù):void input()輸出函數(shù):double output() 復(fù)數(shù)類 數(shù)據(jù)成員(都屬于私有數(shù)據(jù)成員):double imag 成員函數(shù)(都屬于公有成員函數(shù)): 構(gòu)造函數(shù):Complex() Complex(double r,double i) 重載“+”函數(shù):Complex operator+(Compl

6、ex &c2) 重載“-”函數(shù):Complex operator-(Complex &c2) 重載“/”函數(shù):Complex operator*(Complex &c2) 重載“*”函數(shù):Complex operator/(Complex &c2) 輸入函數(shù):void setnumber() 取模函數(shù):double qumo() 平方函數(shù):Complex pf() 取共軛復(fù)數(shù)函數(shù):Complex gonge() 求向量角函數(shù):double xiangliangjiao() 求夾角函數(shù):double jiajiao(Complex &c2) 重載“<

7、<”函數(shù): friend ostream&operator<<(ostream&output,Complex&c)2 類中各個(gè)成員函數(shù)的定義實(shí)數(shù)類中成員函數(shù)定義:Simple()double real=0.0;/構(gòu)造函數(shù)Simple(double r)real=r;/構(gòu)造函數(shù)double jia(Simple &s2)/兩個(gè)實(shí)數(shù)相加函數(shù)double a; a=real+s2.real;return a;double jian(Simple &s2)/兩個(gè)實(shí)數(shù)相減函數(shù)double a;a=real-s2.real;return a;dou

8、ble cheng(Simple &s2)/兩個(gè)實(shí)數(shù)相乘函數(shù)double a;a=(real)*(s2.real);return a;double chu(Simple &s2)/兩個(gè)實(shí)數(shù)相除函數(shù)double a;a=(real)/(s2.real);return a;double zijia()/一個(gè)實(shí)數(shù)自加函數(shù)double a;a=+real;return a;double zijian()/一個(gè)實(shí)數(shù)自減函數(shù)double a;a=-real;return a;double pingfang()/一個(gè)實(shí)數(shù)的平方函數(shù)double a;a=(real)*(real);return

9、 a;double kaifang()/一個(gè)實(shí)數(shù)的二次方根函數(shù)double a;a=sqrt(real);return a;void input()/實(shí)數(shù)的輸入函數(shù)cout<<"請(qǐng)輸入一個(gè)實(shí)數(shù):"<<""cin>>real; double output()/實(shí)數(shù)的輸出函數(shù)return real;復(fù)數(shù)類中成員函數(shù)定義:Complex()real=0.0;imag=0.0;/構(gòu)造函數(shù)Complex(double r,double i)real=r;imag=i;/構(gòu)造函數(shù)void setnumber()/復(fù)數(shù)的輸入函數(shù)co

10、ut<<"請(qǐng)輸入一個(gè)復(fù)數(shù)的實(shí)部:"<<""cin>>real;cout<<"請(qǐng)輸入一個(gè)復(fù)數(shù)的虛部:"<<""cin>>imag;Complex operator+(Complex &c2)/重載"+"用于兩復(fù)數(shù)相加Complex c;c.real=real+c2.real;c.imag=imag+c2.imag;return c;Complex operator-(Complex &c2)/重載"-

11、"用于兩復(fù)數(shù)相減Complex c;c.real=real-c2.real;c.imag=imag-c2.imag;return c;Complex operator*(Complex &c2)/重載"*"用于兩復(fù)數(shù)相乘Complex c;c.real=real*c2.real-imag*c2.imag;c.imag=real*c2.imag+imag*c2.real;return c;Complex operator/(Complex &c2)/重載"/"用于兩復(fù)數(shù)相除Complex c;c.real=(real*c2.rea

12、l+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);return c;double qumo()/一個(gè)復(fù)數(shù)取模函數(shù)double a;a=sqrt(real*real+imag*imag);return a;Complex pf()/一個(gè)復(fù)數(shù)的平方函數(shù)Complex c;c.real=real*real-imag*imag;c.imag=2*real*imag;return c;Complex gonge()/一

13、個(gè)復(fù)數(shù)的共軛復(fù)數(shù)函數(shù)Complex c;c.real=real;c.imag=0-imag;return c;double xiangliangjiao()/單個(gè)復(fù)數(shù)的向量角函數(shù)double a;a=atan(imag/real)*57.295;return a;double jiajiao(Complex &c2)/兩個(gè)復(fù)數(shù)的夾角函數(shù)double a;a=fabs(atan(imag/real)*57.295-(atan(c2.imag/c2.real)*57.295 return a;friend ostream&operator<<(ostream&o

14、utput,Complex&c)/重載"<<"用于復(fù)數(shù)的輸出output<<c.real;if(c.imag>=0)output<<"+"output<<c.imag<<"i"<<endl;return output;3 主程序和重要模塊的算法調(diào)試程序后,顯示屏?xí)@示文字提醒計(jì)算器使用者輸入數(shù)字0或1或2,使用者需根據(jù)提示輸入相關(guān)數(shù)據(jù)。部分相關(guān)程序代碼如下:cout<<"【歡迎使用復(fù)數(shù)運(yùn)算器】"<<endl

15、;gg: cout<<"請(qǐng)輸入0或1或2"<<endl; cout<<"【0】退出復(fù)數(shù)計(jì)算器;"<<endl;cout<<"【1】進(jìn)行實(shí)數(shù)相關(guān)運(yùn)算;"<<endl;cout<<"【2】進(jìn)行復(fù)數(shù)相關(guān)運(yùn)算:"<<""cin>>a;若計(jì)算器使用者輸入1,則選擇了實(shí)數(shù)的相關(guān)運(yùn)算,系統(tǒng)會(huì)提示輸入數(shù)字1-8,1-8分別對(duì)應(yīng)兩個(gè)實(shí)數(shù)間的相加、相減、相乘、相除和一個(gè)實(shí)數(shù)的自加、自減、平方、二次方根等運(yùn)算,

16、使用者需根據(jù)提示輸入1-8,再?gòu)逆I盤(pán)輸入一個(gè)或兩個(gè)實(shí)數(shù),按回車鍵后即可得到正確結(jié)果。部分相關(guān)程序代碼如下:if(a=1)cout<<"1.相加 2.相減 3.相乘 4.相除 (兩個(gè)實(shí)數(shù)間的運(yùn)算)"<<endl;cout<<"5.自加 6.自減 7.平方 8.二次方根 (一個(gè)實(shí)數(shù)的運(yùn)算)"<<endl;cout<<"輸入數(shù)字1-8進(jìn)行選擇:"<<""cin>>b;if(b=1|b=2|b=3|b=4)cout<<"

17、;請(qǐng)輸入2個(gè)實(shí)數(shù):"<<""<<""<<endl;s1.input();s2.input();cout<<"第1個(gè)實(shí)數(shù)是:"<<s1.output()<<endl;cout<<"第2個(gè)實(shí)數(shù)是:"<<s2.output()<<endl;switch(b)case 1:cout<<"相加結(jié)果是:"<<s1.jia(s2)<<endl;break;c

18、ase 2:cout<<"相減結(jié)果是:"<<s1.jian(s2)<<endl;break;case 3:cout<<"相乘結(jié)果是:"<<s1.cheng(s2)<<endl;break;case 4:cout<<"相除結(jié)果是:"<<s1.chu(s2)<<endl;break;default:cout<<"error"<<endl;break;cout<<endl;if(

19、b=5|b=6|b=7|b=8)cout<<"請(qǐng)輸入1個(gè)實(shí)數(shù):"<<""<<endl;s1.input();cout<<"輸入的實(shí)數(shù)是:"<<s1.output()<<endl;switch(b)case 5:cout<<"自加結(jié)果是:"<<s1.zijia()<<endl;break;case 6:cout<<"自減結(jié)果是:"<<s1.zijian()<&l

20、t;endl;break;case 7:cout<<"平方結(jié)果是:"<<s1.pingfang()<<endl;break;case 8:cout<<"二次方根是:"<<s1.kaifang()<<endl;break;default:cout<<"error"<<endl;break;cout<<endl;goto gg;若計(jì)算器使用者輸入2,則選擇了復(fù)數(shù)的相關(guān)運(yùn)算,系統(tǒng)會(huì)提示輸入數(shù)字1-9,1-9分別對(duì)應(yīng)兩個(gè)復(fù)數(shù)間的相加、相

21、減、相乘、相除、夾角和一個(gè)復(fù)數(shù)的取模、平方、向量角、共軛復(fù)數(shù)等運(yùn)算,使用者需根據(jù)提示輸入1-9,再通過(guò)從鍵盤(pán)鍵入分別輸入實(shí)部和虛部輸入一個(gè)或兩個(gè)復(fù)數(shù),按回車鍵后即可得到正確結(jié)果。部分相關(guān)程序代碼如下:if(a=2)cout<<"1.相加 2.相減 3.相乘 4.相除 5.兩個(gè)復(fù)數(shù)的夾角 (兩個(gè)復(fù)數(shù)間的運(yùn)算)"<<endl;cout<<"6.取模 7.平方 8.一個(gè)復(fù)數(shù)的向量角 9.共軛復(fù)數(shù) (一個(gè)復(fù)數(shù)的運(yùn)算)"<<endl;cout<<"輸入數(shù)字1-9進(jìn)行選擇:"<&l

22、t;""cin>>b;if(b=1|b=2|b=3|b=4|b=5)cout<<"請(qǐng)輸入2個(gè)復(fù)數(shù):"<<""<<""<<endl;c1.setnumber();c2.setnumber();cout<<"第1個(gè)復(fù)數(shù)是:"<<c1;cout<<"第2個(gè)復(fù)數(shù)是:"<<c2;switch(b)case 1:cout<<"相加結(jié)果是:"<&

23、lt;c1+c2<<endl;break;case 2:cout<<"相減結(jié)果是:"<<c1-c2<<endl;break;case 3:cout<<"相乘結(jié)果是:"<<c1*c2<<endl;break;case 4:cout<<"相除結(jié)果是:"<<c1/c2<<endl;break;case 5:cout<<"這兩個(gè)復(fù)數(shù)的夾角是:"<<c1.jiajiao(c2)<

24、;<"°"<<endl;break;default:cout<<"error"<<endl;break;cout<<endl;if(b=6|b=7|b=8|b=9)cout<<"請(qǐng)輸入1個(gè)復(fù)數(shù):"<<""<<endl;c1.setnumber();cout<<"輸入的復(fù)數(shù)是:"<<c1;switch(b)case 6:cout<<"取模結(jié)果是:&quo

25、t;<<c1.qumo()<<endl;break; case 7:cout<<"平方結(jié)果是:"<<c1.pf()<<endl;break;case 8:cout<<"該復(fù)數(shù)的向量角是:"<<c1.xiangliangjiao()<<"°"<<endl;break;case 9:cout<<"該復(fù)數(shù)的共軛復(fù)數(shù)是:"<<c1.gonge()<<endl;break;

26、default:cout<<"error"<<endl;break;cout<<endl;goto gg;若計(jì)算器使用者輸入0,再按任意鍵后,即可退出復(fù)數(shù)計(jì)算器。此過(guò)程是通過(guò)運(yùn)用if判斷語(yǔ)句和switch選擇語(yǔ)句而實(shí)現(xiàn)的。部分相關(guān)程序代碼如下:if(a=0) cout<<"【謝謝使用!按任意鍵后,您將退出復(fù)數(shù)計(jì)算器】"<<endl;exit(0);若第一次計(jì)算器使用者輸入1或2且一次運(yùn)算結(jié)束后,系統(tǒng)會(huì)再次提醒輸入0或1或2,即可進(jìn)行下一次運(yùn)算;若第一次計(jì)算器使用者輸入0,則會(huì)退出系統(tǒng)。此過(guò)程是通

27、過(guò)運(yùn)用goto循環(huán)語(yǔ)句和if判斷語(yǔ)句而實(shí)現(xiàn)的。4 程序運(yùn)行的流程圖(鑒于程序中用到if判斷語(yǔ)句和switch循環(huán)語(yǔ)句,流程圖中會(huì)有較多分支,所以此流程圖將會(huì)以三部分的形式呈現(xiàn))從鍵盤(pán)輸入數(shù)字0或1或2輸入1輸入2輸入034退出程序 圖1 程序圖分圖1 輸入1輸入數(shù)字1-8876543321調(diào)用1次實(shí)數(shù)輸入函數(shù),1次輸出函數(shù),1次二次方根函數(shù)調(diào)用1次實(shí)數(shù)輸入函數(shù),1次輸出函數(shù),1次平方函數(shù)調(diào)用1次實(shí)數(shù)輸入函數(shù),1次輸出函數(shù),1次相減函數(shù)調(diào)用1次實(shí)數(shù)輸入函數(shù),1次輸出函數(shù),1次自加函數(shù)調(diào)用2次實(shí)數(shù)輸入函數(shù),2次輸出函數(shù),1次相除函數(shù)調(diào)用2次實(shí)數(shù)輸入函數(shù),2次輸出函數(shù),1次相乘函數(shù)調(diào)用2次實(shí)數(shù)輸入函

28、數(shù),2次輸出函數(shù),1次相減函數(shù)調(diào)用2次實(shí)數(shù)輸入函數(shù),2次輸出函數(shù),1次相加函數(shù)輸出結(jié)果3 圖2 程序圖分圖2 輸入2輸入數(shù)字1-99876543321調(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次求單個(gè)復(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é)果4 圖3 程序圖分圖3 第二章 調(diào)試與總結(jié)2.1 調(diào)試分析與測(cè)試結(jié)果2.1.1調(diào)試過(guò)程中遇

29、到的問(wèn)題及解決方法 1調(diào)試出現(xiàn)錯(cuò)誤 調(diào)試過(guò)程中出現(xiàn)錯(cuò)誤,不能正常運(yùn)行,經(jīng)檢查后發(fā)現(xiàn)是代碼中包含的sqrt函數(shù),fabs函數(shù),atan函數(shù)沒(méi)有定義,在頭文件中加上#include<cmath>即可正常運(yùn)行。 2運(yùn)算結(jié)果不正確 調(diào)試過(guò)程中,當(dāng)算一個(gè)復(fù)數(shù)的向量角時(shí),算出的度數(shù)不對(duì),經(jīng)認(rèn)真檢查后,發(fā)現(xiàn)是沒(méi)有將弧度轉(zhuǎn)化為度數(shù),只需在原始結(jié)果后乘57.295即可得到正確結(jié)果。 當(dāng)算兩個(gè)復(fù)數(shù)的夾角時(shí),有時(shí)運(yùn)行結(jié)果出現(xiàn)負(fù)角,但兩個(gè)復(fù)數(shù)的夾角不可能是負(fù)的,經(jīng)仔細(xì)思考后,在原始結(jié)果前加fabs取絕對(duì)值,即可得到正確結(jié)果。 3循環(huán)結(jié)構(gòu)不恰當(dāng) 調(diào)試過(guò)程中,剛開(kāi)始每進(jìn)行一種運(yùn)算后,就會(huì)退出系統(tǒng),若想要進(jìn)行下

30、一次運(yùn)算,必須重新調(diào)試,這樣不太方便,最終經(jīng)過(guò)思考,我在main函數(shù)中加入了一個(gè)goto循環(huán)結(jié)構(gòu)和exit退出語(yǔ)句,有了這些修改后,在每次運(yùn)算結(jié)束后,可以選擇繼續(xù)進(jìn)行下一次運(yùn)算,或是退出系統(tǒng),這樣比較方便。2.1.2測(cè)試結(jié)果(鑒于許多運(yùn)算功能原理相似,以下只列出部分功能的測(cè)試結(jié)果) 1.求兩個(gè)實(shí)數(shù)相乘的結(jié)果:2. 求一個(gè)實(shí)數(shù)自減的結(jié)果3. 求一個(gè)實(shí)數(shù)平方的結(jié)果:4. 求一個(gè)實(shí)數(shù)的二次方根:5. 求兩個(gè)復(fù)數(shù)相除的結(jié)果:6. 求兩個(gè)復(fù)數(shù)的夾角:7. 求一個(gè)復(fù)數(shù)的模:8.求一個(gè)復(fù)數(shù)的向量角:9. 求一個(gè)復(fù)數(shù)的共軛復(fù)數(shù):22課程設(shè)計(jì)總結(jié)2.2.1課設(shè)總結(jié)在這次程序設(shè)計(jì)的過(guò)程中,我遇到了很多問(wèn)題,同時(shí)也

31、收獲了不少,成長(zhǎng)了不少。一拿到題目我就非常緊張,害怕自己做不出來(lái),焦慮的情緒讓我浪費(fèi)了好多時(shí)間,這讓我懂得在生活中遇到問(wèn)題時(shí),要有良好的心態(tài),一定要鎮(zhèn)定自若,千萬(wàn)不能驚慌失措。當(dāng)我花了好久,終于辛辛苦苦設(shè)計(jì)出了算法,編寫(xiě)好程序,可是當(dāng)調(diào)試時(shí),出現(xiàn)了很多問(wèn)題,如:調(diào)試過(guò)程中出現(xiàn)錯(cuò)誤,程序不能正常運(yùn)行,經(jīng)認(rèn)真檢查和思考后發(fā)現(xiàn)是頭文件中缺少#include<cmath>;還有調(diào)試過(guò)程中,當(dāng)算一個(gè)復(fù)數(shù)的向量角時(shí),算出的度數(shù)不對(duì),經(jīng)認(rèn)真檢查后,發(fā)現(xiàn)是沒(méi)有將弧度轉(zhuǎn)化為度數(shù),只需在原始結(jié)果后乘57.295即可得到正確結(jié)果;當(dāng)算兩個(gè)復(fù)數(shù)的夾角時(shí),有時(shí)運(yùn)行結(jié)果出現(xiàn)負(fù)角,但兩個(gè)復(fù)數(shù)的夾角不可能是負(fù)的,

32、經(jīng)仔細(xì)思考后,在原始結(jié)果前加fabs取絕對(duì)值,即可得到正確結(jié)果;還有調(diào)試過(guò)程中,剛開(kāi)始每進(jìn)行一種運(yùn)算后,就會(huì)退出系統(tǒng),若想要進(jìn)行下一次運(yùn)算,必須重新調(diào)試,這樣不太方便,最終經(jīng)過(guò)思考,我在main函數(shù)中加入了一個(gè)goto循環(huán)結(jié)構(gòu)和exit退出語(yǔ)句,有了這些修改后,在每次運(yùn)算結(jié)束后,可以選擇繼續(xù)進(jìn)行下一次運(yùn)算,或是退出系統(tǒng),這樣比較方便。回頭檢查錯(cuò)誤,修改程序的過(guò)程,又讓我花費(fèi)了好多時(shí)間和精力,這讓我知道做任何事都要有嚴(yán)謹(jǐn)?shù)膽B(tài)度,并考慮到結(jié)果。在完善程序的過(guò)程中,我也學(xué)會(huì)了如何快速尋找錯(cuò)誤并改正,還讓我做任何事更有耐心。當(dāng)我遇到問(wèn)題不能自己獨(dú)立解決時(shí),我求助了同學(xué),這也讓我深刻懂得,在必要的時(shí)候我

33、們可以求助他人,同樣可以得到好的結(jié)果,但大部分還是要靠自己的力量解決問(wèn)題。在這次課程設(shè)計(jì)中,我設(shè)計(jì)了一個(gè)較大的程序后,我對(duì)書(shū)本上的理論知識(shí)有了更全面、深刻的理解,同時(shí)也鍛煉了我的動(dòng)手能力、實(shí)踐能力、將課本知識(shí)運(yùn)用到實(shí)際生活中的能力。雖然這次程序設(shè)計(jì)的過(guò)程很艱難,但最終我成功了,我覺(jué)得一切的努力都是值得的。 第三章 參考文獻(xiàn) 1C+程序設(shè)計(jì) 2C+程序設(shè)計(jì)實(shí)驗(yàn)上機(jī)與指導(dǎo) 第四章 附錄#include<iostream.h>#include<string>#include<cmath>class Simpleprotected:double real;publi

34、c:Simple()double real=0.0;/構(gòu)造函數(shù)Simple(double r)real=r;/構(gòu)造函數(shù)double jia(Simple &s2)/兩個(gè)實(shí)數(shù)相加函數(shù)double a; a=real+s2.real; return a;double jian(Simple &s2)/兩個(gè)實(shí)數(shù)相減函數(shù)double a;a=real-s2.real;return a;double cheng(Simple &s2)/兩個(gè)實(shí)數(shù)相乘函數(shù)double a;a=(real)*(s2.real);return a;double chu(Simple &s2)/兩

35、個(gè)實(shí)數(shù)相除函數(shù)double a;a=(real)/(s2.real);return a;double zijia()/一個(gè)實(shí)數(shù)自加函數(shù)double a;a=+real;return a;double zijian()/一個(gè)實(shí)數(shù)自減函數(shù)double a;a=-real;return a;double pingfang()/一個(gè)實(shí)數(shù)的平方函數(shù)double a;a=(real)*(real);return a;double kaifang()/一個(gè)實(shí)數(shù)的二次方根函數(shù)double a;a=sqrt(real);return a;void input()/實(shí)數(shù)的輸入函數(shù)cout<<"

36、;請(qǐng)輸入一個(gè)實(shí)數(shù):"<<""cin>>real;double output()/實(shí)數(shù)的輸出函數(shù)return real;class Complex:public Simpleprivate:double imag;public:Complex()real=0.0;imag=0.0;/構(gòu)造函數(shù)Complex(double r,double i)real=r;imag=i;/構(gòu)造函數(shù)void setnumber()/復(fù)數(shù)的輸入函數(shù)cout<<"請(qǐng)輸入一個(gè)復(fù)數(shù)的實(shí)部:"<<""cin&

37、gt;>real;cout<<"請(qǐng)輸入一個(gè)復(fù)數(shù)的虛部:"<<""cin>>imag;Complex operator+(Complex &c2)/重載"+"用于兩復(fù)數(shù)相加Complex c;c.real=real+c2.real;c.imag=imag+c2.imag;return c;Complex operator-(Complex &c2)/重載"-"用于兩復(fù)數(shù)相減Complex c;c.real=real-c2.real;c.imag=imag-c2

38、.imag;return c;Complex operator*(Complex &c2)/重載"*"用于兩復(fù)數(shù)相乘Complex c;c.real=real*c2.real-imag*c2.imag;c.imag=real*c2.imag+imag*c2.real;return c;Complex operator/(Complex &c2)/重載"/"用于兩復(fù)數(shù)相除Complex c;c.real=(real*c2.real+imag*c2.imag)/(c2.real*c2.real+c2.imag*c2.imag);c.imag=

39、(imag*c2.real-real*c2.imag)/(c2.real*c2.real+c2.imag*c2.imag);return c;double qumo()/一個(gè)復(fù)數(shù)取模函數(shù)double a;a=sqrt(real*real+imag*imag);return a;Complex pf()/一個(gè)復(fù)數(shù)的平方函數(shù)Complex c;c.real=real*real-imag*imag;c.imag=2*real*imag;return c;Complex gonge()/一個(gè)復(fù)數(shù)的共軛復(fù)數(shù)函數(shù)Complex c;c.real=real;c.imag=0-imag;return c;do

40、uble xiangliangjiao()/單個(gè)復(fù)數(shù)的向量角函數(shù)double a;a=atan(imag/real)*57.295;return a;double jiajiao(Complex &c2)/兩個(gè)復(fù)數(shù)的夾角函數(shù)double a;a=fabs(atan(imag/real)*57.295-(atan(c2.imag/c2.real)*57.295);return a;friend ostream&operator<<(ostream&output,Complex&c)/重載"<<"用于復(fù)數(shù)的輸出output

41、<<c.real;if(c.imag>=0)output<<"+"output<<c.imag<<"i"<<endl;return output;int main() Simple s1,s2;Complex c1,c2;int a,b;cout<<"【歡迎使用復(fù)數(shù)運(yùn)算器】"<<endl; gg: cout<<"請(qǐng)輸入0或1或2"<<endl;cout<<"【0】退出復(fù)數(shù)計(jì)算器;&

42、quot;<<endl;cout<<"【1】進(jìn)行實(shí)數(shù)相關(guān)運(yùn)算;"<<endl;cout<<"【2】進(jìn)行復(fù)數(shù)相關(guān)運(yùn)算:"<<"" cin>>a;if(a=1)cout<<"1.相加 2.相減 3.相乘 4.相除 (兩個(gè)實(shí)數(shù)間的運(yùn)算)"<<endl;cout<<"5.自加 6.自減 7.平方 8.二次方根 (一個(gè)實(shí)數(shù)的運(yùn)算)"<<endl;cout<<"輸入數(shù)

43、字1-8進(jìn)行選擇:"<<""cin>>b;if(b=1|b=2|b=3|b=4)cout<<"請(qǐng)輸入2個(gè)實(shí)數(shù):"<<""<<""<<endl;s1.input();s2.input();cout<<"第1個(gè)實(shí)數(shù)是:"<<s1.output()<<endl;cout<<"第2個(gè)實(shí)數(shù)是:"<<s2.output()<<endl;

44、switch(b)case 1:cout<<"相加結(jié)果是:"<<s1.jia(s2)<<endl;break;case 2:cout<<"相減結(jié)果是:"<<s1.jian(s2)<<endl;break;case 3:cout<<"相乘結(jié)果是:"<<s1.cheng(s2)<<endl;break;case 4:cout<<"相除結(jié)果是:"<<s1.chu(s2)<<end

45、l;break;default:cout<<"error"<<endl;break;cout<<endl;if(b=5|b=6|b=7|b=8)cout<<"請(qǐng)輸入1個(gè)實(shí)數(shù):"<<""<<endl;s1.input();cout<<"輸入的實(shí)數(shù)是:"<<s1.output()<<endl;switch(b)case 5:cout<<"自加結(jié)果是:"<<s1.ziji

46、a()<<endl;break;case 6:cout<<"自減結(jié)果是:"<<s1.zijian()<<endl;break;case 7:cout<<"平方結(jié)果是:"<<s1.pingfang()<<endl;break;case 8:cout<<"二次方根是:"<<s1.kaifang()<<endl;break;default:cout<<"error"<<endl;break;cout<<endl;goto gg;if(a=2)cout<<&

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論