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