矩阵化为行最简形矩阵计算器_[内附完整源码和文档] 基于C++的小型特殊计算器...
1.設(shè)計(jì)內(nèi)容
實(shí)現(xiàn)一個(gè)特殊的計(jì)算器,可以實(shí)現(xiàn)復(fù)數(shù)、有理數(shù)、矩陣和集合的特殊計(jì)算。程序可以實(shí)現(xiàn)復(fù)數(shù)、有理數(shù)的加、減、乘、除,可以實(shí)現(xiàn)矩陣的加法、減法和乘法運(yùn)算,也可以實(shí)現(xiàn)集合的求交集、并集、子集的運(yùn)算。
2.設(shè)計(jì)目的與要求
2.1 設(shè)計(jì)目的
達(dá)到熟練掌握C++語言的基本知識和技能
基本掌握面向?qū)ο蟪绦蛟O(shè)計(jì)的基本思路和方法
能夠利用所學(xué)的基本知識和技能,解決簡單的面向?qū)ο蟪绦蛟O(shè)計(jì)問題
2.2 設(shè)計(jì)要求
要求利用面向?qū)ο蟮姆椒ㄒ约癈++的編程思想來完成系統(tǒng)的設(shè)計(jì)
要求在設(shè)計(jì)的過程中,建立清晰的類層次
在系統(tǒng)的設(shè)計(jì)中,至少要用到面向?qū)ο蟮囊环N機(jī)制
3.系統(tǒng)分析與設(shè)計(jì)
3.1 主要知識點(diǎn)
運(yùn)算符重載增加了C++語言的可擴(kuò)充性。運(yùn)算符的重載實(shí)際上就是一種函數(shù)調(diào)用的形式,可以用成員函數(shù)重載運(yùn)算符,就是將運(yùn)算符重載定義為一個(gè)類的成員函數(shù)的形式;也可以用友元函數(shù)重載。用友元重載運(yùn)算符的友元函數(shù)是獨(dú)立于類以外的一般函數(shù)。
3.2 關(guān)鍵技術(shù)
程序中每一種數(shù)據(jù)類型用一個(gè)類來實(shí)現(xiàn),共設(shè)計(jì)了4個(gè)類。復(fù)數(shù)類complex,矩陣類matrix,有理數(shù)類rational以及集合類set。每一種類都定義了相應(yīng)的運(yùn)算符重載函數(shù)。具體定義如下所示:
3.2.1 類complex
類complex中,成員變量image表示虛部,real表示實(shí)部。成員函數(shù)print()用來顯示數(shù)據(jù)。運(yùn)算符重載函數(shù)都是用友元函數(shù)來實(shí)現(xiàn)的。分別重載+、-、*、/運(yùn)算符。
3.2.2 類matrix
類matrix中,成員變量elems用來存放矩陣的所有元素,rows表示矩陣的行,cols表示矩陣的列。成員函數(shù)SetElems()用來給矩陣中的每一個(gè)元素賦值,Disp()用來顯示矩陣中的所有元素。其它友元函數(shù)分別重載+、-、*、/運(yùn)算符。
3.2.3 類rational
類rational中,有兩個(gè)成員變量:denominator用來表示有理數(shù)的分母,numerator表示有理數(shù)的分子。有理數(shù)成員函數(shù)print()用來顯示有理數(shù),optimization()用來優(yōu)化有理數(shù)函數(shù)。友元函數(shù)real()用來將有理數(shù)轉(zhuǎn)換為實(shí)數(shù),其它友元函數(shù)分別重載+、-、*、/運(yùn)算符。
3.2.4 類set
類set中,有兩個(gè)成員變量:elems用來存儲集合中的元素,card表示集合中元素的個(gè)數(shù)。成員函數(shù)print()用來輸出集合中的元素,additem()用來給集合增加元素。友元函數(shù)分別重載了&、==、!=、+、*、<、<=運(yùn)算符。
程序中的運(yùn)算符重載函數(shù)都用友元函數(shù)來實(shí)現(xiàn)。
類complex的友元函數(shù)
復(fù)數(shù)的表達(dá)形式為a+bi,對復(fù)數(shù)進(jìn)行運(yùn)算符重載不像對一般書進(jìn)行運(yùn)算那樣簡單,它的運(yùn)輸方法如下:
加法
(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
除法
(a+bi)/(c+di)=((a+bi)*(c-di))/(c2+d2)
重載函數(shù)將以上算法用在了函數(shù)中。
類matrix的友元函數(shù)
矩陣類的賦值,實(shí)質(zhì)上是給二維數(shù)組賦值;矩陣相加減就是兩個(gè)行數(shù)列數(shù)相同的二維數(shù)組相加減;二維數(shù)組相乘,其實(shí)就是兩個(gè)二維數(shù)組,其中一個(gè)的行數(shù)等于另一個(gè)的列數(shù),按矩陣相乘的法則進(jìn)行計(jì)算。
類rational的友元函數(shù)
對有理數(shù)類進(jìn)行的操作有下面幾種:
有理數(shù)相加
當(dāng)兩個(gè)有理數(shù)a/b和c/d相加時(shí),可得到這樣的算式:
a/b+c/d=(ad+bc)/(b*d)
有理數(shù)相減
當(dāng)兩個(gè)有理數(shù)a/b和c/d相減時(shí),得到的結(jié)果是:
分子:ad-bc
分母:b*d
有理數(shù)相乘
當(dāng)兩個(gè)有理數(shù)a/b和c/d相乘時(shí),得到的結(jié)果是:
分子:a*c
分母:b*d
有理數(shù)相除
當(dāng)兩個(gè)有理數(shù)a/b和c/d相除時(shí),得到的結(jié)果是:
分子:a*d
分母:b*c
每次得到結(jié)果時(shí),都需要對有理數(shù)進(jìn)行優(yōu)化。
4.運(yùn)行結(jié)果
程序運(yùn)行時(shí),首先出現(xiàn)主界面菜單,由用戶進(jìn)行功能選擇,選擇不同的數(shù)字,進(jìn)入不同的功能區(qū)。
完整的源碼和詳細(xì)的文檔,上傳到了 WRITE-BUG技術(shù)共享平臺 上,需要的請自取:
https://www.write-bug.com/article/2897.html
總結(jié)
以上是生活随笔為你收集整理的矩阵化为行最简形矩阵计算器_[内附完整源码和文档] 基于C++的小型特殊计算器...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: clickhouse原理解析与开发实战
- 下一篇: python初步入门_python如何入