

下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、課程設(shè)計任務(wù)書 學(xué)院 信息科學(xué)與工程學(xué)院 專業(yè) 電子信息工程 姓名 李尾冬 學(xué)號 0903030112 題目 小型特殊計算器 內(nèi)容及要求: 1 1 內(nèi)容與功能要求 題目運算符重載實現(xiàn)專用運算器: 參考提供資料中相應(yīng)內(nèi)容,以成員函數(shù)的形式重載運算符,實現(xiàn) 2 2、軟件開發(fā)環(huán)境 Windows XpWindows Xp,Visual C+ 6.0Visual C+ 6.0 進度安排: 第 15 周 星期一:設(shè)計任務(wù)分析和總體設(shè)計 星期二:軟件算法和流程設(shè)計 星期三、四、五:軟件編碼實現(xiàn) 第 1616 周 周一:軟件總體調(diào)試 周二:軟件運行分析 周三:答辯、驗收程序 周四:答辯、驗收程序 周五:書寫
2、課程設(shè)計報告,提交 指導(dǎo)教師(簽字): 學(xué)院院長(簽字): 年 月曰 年 月曰 目錄 1. 題目內(nèi)容 - 2 2. 程序特點及功能 - 3 3. 總體思路 - 3 4. 詳細設(shè)計 - 4 5. - 程序清單 5 6. 運行結(jié)果與分析 - 17 7. 參考文獻 - 22 課程設(shè)計名稱: 小型特殊計算器 1. 設(shè)計內(nèi)容: 實現(xiàn)一個特殊的計算器,可以實現(xiàn)復(fù)數(shù)、有理數(shù)、矩陣和集合的特殊計算。程序 可以實現(xiàn)復(fù)數(shù)、有理數(shù)的加、減、乘、除,可以實現(xiàn)矩陣的加法、減法和乘法運算, 也可以實現(xiàn)集合的求交集、并集、子集的運算。 2. 設(shè)計目的與要求: 2.1 設(shè)計目的 達到熟練掌握 C+ 語言的基本知識和技能; 基
3、本掌握面向?qū)ο蟪绦蛟O(shè)計的基本思路和方法; 能夠利用所學(xué)的基本知識和技能,解決簡單的面向?qū)ο蟪绦蛟O(shè)計問題。 2.2 設(shè)計要求 要求利用面向?qū)ο蟮姆椒ㄒ约?C+ 的編程思想來完成系統(tǒng)的設(shè)計; 要求在設(shè)計的過程中,建立清晰的類層次; 在系統(tǒng)的設(shè)計中,至少要用到面向?qū)ο蟮囊环N機制。 3. 系統(tǒng)分析與設(shè)計 3.1 主要知識點 運算符重載增加了 C+語言的可擴充性。 運算符的重載實際上就是一種函數(shù)調(diào)用 的形式,可以用成員函數(shù)重載運算符,就是將運算符重載定義為一個類的成員函數(shù)的 形式;也可以用友元函數(shù)重載。用友元重載運算符的友元函數(shù)是獨立于類以外的一般 函數(shù)。 3.2 關(guān)鍵技術(shù) 程序中每一種數(shù)據(jù)類型用一個類
4、來實現(xiàn),共設(shè)計了 4 個類。復(fù)數(shù)類 complex,矩陣 類 matrix,有理數(shù)類 rational 以及集合類 set。每一種類都定義了相應(yīng)的運算符重載函 數(shù)。具體定義如下所示: ( 1)類 complex 類 complex 中,成員變量 image 表示虛部,real表示實部。成員函數(shù) print()用來顯 示數(shù)據(jù)。運算符重載函數(shù)都是用友元函數(shù)來實現(xiàn)的。分別重載 +、-、*、/運算符。 ( 2)類 matrix 類 matrix 中,成員變量 elems 用來存放矩陣的所有元素,rows 表示矩陣的行,cols 表示矩陣的列。成員函數(shù) SetElems()用來給矩陣中的每一個元素賦值,
5、Disp()用來顯示 矩陣中的所有元素。其它友元函數(shù)分別重載 +、-、*、/運算符。 ( 3)類 rational 類 rational 中,有兩個成員變量:denominator 用來表示有理數(shù)的分母, numerator 表示有理數(shù)的分子。有理數(shù)成員函數(shù) prin t()用來顯示有理數(shù),optimizati on()用來優(yōu)化有 理數(shù)函數(shù)。友元函數(shù) real()用來將有理數(shù)轉(zhuǎn)換為實數(shù),其它友元函數(shù)分別重載 +、-、 * 、 /運算符。 ( 4)類 set 類 set 中,有兩個成員變量:elems 用來存儲集合中的元素,card 表示集合中元素 的個數(shù)。成員函數(shù) print()用來輸出集合中
6、的元素,additem()用來給集合增加元素。友元 函數(shù)分別重載了 &、=、!=、+、*、=運算符。 程序中的運算符重載函數(shù)都用友元函數(shù)來實現(xiàn)。 類 complex 的友元函數(shù) 復(fù)數(shù)的表達形式為 a+bi,對復(fù)數(shù)進行運算符重載不像對一般書進行運算那樣簡 單,它的運輸方法如下: 加法: (a+bi)+(c+di)=(a+c)+(b+d)i 減法: (a+bi)-(c+di)=(a-c)+(b-d)i 乘法: (a+bi)*(c-di)=(ac-bd)+(ad+bc)i 除法: 22 (a+bi)/(c+di)=(a+bi)*(c-di)/(c 2+d2) 重載函數(shù)將以上算法用在了函數(shù)中。
7、 類 matrix 的友元函數(shù) 矩陣類的賦值,實質(zhì)上是給二維數(shù)組賦值;矩陣相加減就是兩個行數(shù)列數(shù)相同的二維 數(shù)組相加減;二維數(shù)組相乘,其實就是兩個二維數(shù)組,其中一個的行數(shù)等于另一個的 列數(shù),按矩陣相乘的法則進行計算。 類 rational 的友元函數(shù) 對有理數(shù)類進行的操作有下面幾種: 有理數(shù)相加: 當兩個有理數(shù) a/b 和 c/d 相加時,可得到這樣的算式: a/b+c/d=(a*d+b*c)/(b*d) 有理數(shù)相減: 當兩個有理數(shù) a/b 和 c/d 相減時,得到的結(jié)果是: 分子: a*d-b*c 分母: b*d 有理數(shù)相乘: 當兩個有理數(shù) a/b 和 c/d 相乘時,得到的結(jié)果是: 分子:
8、 a*c 分母: b*d 有理數(shù)相除: 當兩個有理數(shù) a/b 和 c/d 相除時,得到的結(jié)果是: 分子: a*d 分母: b*c 每次得到結(jié)果時,都需要對有理數(shù)進行優(yōu)化。 類 set 的友元函數(shù) 集合類的運算符重載操作主要有以下幾種: 判定某一元素是否屬于集合: 此操作用重載運算符函數(shù)&實現(xiàn),返回值只有兩種情況 true 或者 false,取 bool 類 型。 判斷兩個集合是否相等: 判定兩個集合是否相等,需要看兩個集合中所包含的元素是否相同,并且不管順 序如何。用重載運算符 =來實現(xiàn)。 判斷兩個集合是否不等: 是相等操作的取反,用!=來實現(xiàn) 兩個集合的交集: 即求出兩個集合中的公共
9、元素,用運算符*實現(xiàn)。 兩個個集合的并集: 即兩個集合相合并,合并以后去掉重復(fù)的元素,用運算符 +來實現(xiàn)。 判定一個集合是否是另一個集合的子集: 用運算符 =來實現(xiàn) 判定一個集合是否是另一個集合的純子集: 用運算符 實現(xiàn) 3.3 基本功能要求 (1) 功能選擇可以用菜單來實現(xiàn) 例如: 請選擇您的計算內(nèi)容: 1. 復(fù)數(shù)計算 2. 有理數(shù)計算 3. 矩陣計算 4. 集合計算 0.退出 用戶通過輸入不同的數(shù)字進入不同的菜單。次級菜單主要顯示本程序的功能,主 要的功能有加法、減法、乘法和除法以及集合的求交集、求并集、求子集。 (2) 運行時給出明確的提示信息。 比如,輸入一個什么類型的數(shù)據(jù)。根據(jù)用戶的
10、輸入計算輸出結(jié)果。由于數(shù)據(jù)類型 比較多,可以一次輸入第一個復(fù)數(shù)的實部,第一個復(fù)數(shù)的虛部,再輸入第二個復(fù)數(shù)的 實部、虛部。矩陣運算需要先輸入矩陣的行數(shù)和列數(shù),然后依次輸出矩陣的第一行第 一列的元素、第一行第二列的元素等等,依次類推。有理數(shù)運算需要一次輸入有理數(shù) 的分子、分母。集合運算需要輸入集合的元素個數(shù),然后依次輸入集合中的每一個元 素。 4. 系統(tǒng)總體設(shè)計(確定程序功能模塊) 5 程序清單 程序代碼實現(xiàn) #i nclude #in elude * / 矩陣類的聲明 class matrix public: void Disp() 。 /顯示矩陣所有元素 int matrix:operator
11、 ()(short row, short col)。 /重載運算符成員函數(shù) () void SetElem(short row,short col,int val)。 /將元素 (row,col) 設(shè)置為 val matrix() 。 matrix(short r,short c) rows= r。 cols= c。 elems= new introws*cols 。 virtual matrix() 。 friend matrix operator +(matrix p,matrix q) 。 friend matrix operator -(matrix p,matrix q) 。 fri
12、end matrix operator *(matrix p,matrix q) 。 private: int * elems。 /存放矩陣的所有元素 short cols。 /矩陣的列 short rows。 /矩陣的行 /矩陣類的各個成員函數(shù)的具體定義 matrix:matrix() matrix:matrix() /* 函數(shù)名稱: matrix:operator ()(short row, short col) 功能描述: 重載運算符成員函數(shù) 修改記錄: */ int matrix:operator ()(short row, short col) if(row=1 & row=
13、1 & col=1 & row=1 & col=cols) elems(row-1)*cols+(col-1)= val 。 */ /* 函數(shù)名稱: matrix:Disp() 功能描述: 顯示矩陣元素 修改記錄: */ void matrix:Disp() for(i nt row=1 。 row=rows。 row+) for(int col=1 。 col=cols。 col+) coutsetw(2)(*this)(row,col) 。 coutendl。 I* /* 函數(shù)名稱: operator +(matrix p,matrix q) 功能描述: 重載運算符
14、 修改記錄: */ matrix operator +(matrix p,matrix q) matrix m(p.rows,p.cols)。 if(p.rows!=q.rows | p.cols!=q.cols) return m。 for(int r=1 。 r=p.rows。 r+) for(int c=1 。 c=p.cols。 c+) m.SetElem(r,c,p(r,c)+q(r,c)。 return m。 /* 函數(shù)名稱: operator -(matrix p,matrix q) 功能描述: 重載運算符 - 修改記錄: matrix operator -(matrix p,m
15、atrix q) matrix m(p.rows,p.cols)。 if(p.rows!=q.rows | p.cols!=q.cols) return m。 for(int r=1 。 r=p.rows。 r+) for(int c=1。 c=p.cols。C+) m.SetElem(r,c,p(r,c)-q(r,c)。 return m。 I* /* 函數(shù)名稱: operator *(matrix p,matrix q) 功能描述: 重載運算符 * 修改記錄: matrix operator *(matrix p,matrix q) matrix m(p.rows,p.cols)。 if(
16、p.cols!=q.rows) return m。 for(int r=1 。 r=p.rows。 r+) for(int c=1 。 c=p.cols。 c+) int s=0。 for(int i=1 。 i=p.cols。 i+) s+=p(r,i)*q(i,c) 。 m.SetElem(r,c,s)。 return m。 I* */ void jiemian() 。 void tuichu()。 void matrixcompute() 。 int main() */ */ /* main 函數(shù) */ jiemian() 。 return 0。 /* 主界面函數(shù),實現(xiàn)了界面及函數(shù)調(diào)用
17、*/ /*/ void jiemian() int i 。 coutendlendl。 cout - endl 。 cout* *endl。 cout 歡 迎 進 入 用 運 算 符 重 載 實 現(xiàn) 特 殊 計 算 器 程 序 endl。 cout* *endl。 cout - endl 。 while(i) coutendlendl。 coutvv請選擇您要進行的操作:e ndlvve ndl cout 1.矩陣計算; endl。 cout 0.退出; i。 coutvvendl。 /判斷輸入, 0 退出 if(i=0 | i=1) switch(i) case 1: matrixcompu
18、te()。 break。 case 0: tuichu()。 break。 else coutvv輸入錯誤!。 coutvv重新輸入endl。 * /* 退出函數(shù) */ void tuichu() cout - endl 。 cout* *endl。 cout 謝 謝 使 用 運 算 符 重 載 實 現(xiàn) 特 殊 計 算 器 程 序 , 再 見 ! endl。 cout* *endl。 endl 。 void matrixcompute() int j 。 cout請選擇您的矩陣計算內(nèi)容:e ndle ndl。 cout 1.兩個矩陣相加; endl。 cout 2.兩個矩陣相減; endl。
19、cout 3.兩個矩陣相乘; endl。 cout 0.返回主界面; j 。 cout=0 & jr1。 cout請輸入第一個矩陣的列數(shù):。 cinj1。 cout請輸入第二個矩陣的行數(shù):。 cinr2。 coutvv請輸入第二個矩陣的列數(shù):。 cinj2。 matrix c1(r1,j1) 。 matrix c2(r2,j2) 。 matrix c3。 coutvv請輸入第一個矩陣的元素:e ndl。 for(int m=1 。 m=r1。 m+) for(int n=1 。 nv=j1。 n+) coutvv第vvmvv行*val。 c1.SetElem (m,n,val)。cout /* 矩陣計算函數(shù) */ c1.Disp()。 cout請輸入二個矩陣的元素:e ndl。 for(int h=1。h=r2。 h+) for( int k=1 。 kval。 c2.Se
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 煤礦效益增長活動方案
- 熊貓酒吧活動方案
- 現(xiàn)成情侶活動方案
- 愛我單位活動方案
- 珠江夜景活動方案
- 物品交易活動策劃方案
- 愛美麗家居秒殺活動方案
- 特產(chǎn)營銷活動方案
- 貓咪積分賽活動策劃方案
- 生兒育女抽簽活動方案
- 2025年遼寧、吉林、黑龍江、內(nèi)蒙古四省高考物理真題(含答案)
- DB4201∕T 694-2024 押運行業(yè)安全生產(chǎn)標準化基本規(guī)范
- 2024年鹽城市大豐區(qū)事業(yè)單位招聘考試真題
- 2025年天津市中考語文試卷(含標準答案)
- 2025年6月浙江省高考技術(shù)試卷真題
- 2025屆上海市高考英語考綱詞匯表
- 2024年山西煙草專賣局考試真題試卷及答案
- 有機化學(xué)(上)(中國藥科大學(xué))知到智慧樹期末考試答案題庫2025年中國藥科大學(xué)
- 重癥肌無力課件
- 2024年四川省資中縣事業(yè)單位公開招聘教師崗筆試題帶答案
- 四川省2024普通高校招生本科一批調(diào)檔線(理科)
評論
0/150
提交評論