版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p><b> 信息科學(xué)與技術(shù)學(xué)院</b></p><p> 程序設(shè)計基礎(chǔ)課程設(shè)計報告</p><p> 題目名稱: 矩陣類 </p><p> 學(xué)生姓名: 韓 偉 </p><p> 學(xué) 號: 2011508036
2、 </p><p> 專業(yè)班級: 計算機科學(xué)與技術(shù) </p><p> 指導(dǎo)教師: 郭 理 </p><p> 2012年 7 月 2 日</p><p><b> 目 錄</b></p><p><b> 目錄&
3、lt;/b></p><p> 1課程設(shè)計題目與要求2</p><p><b> 1.1設(shè)計題目2</b></p><p> 1.2設(shè)計要求:2</p><p><b> 2總體設(shè)計3</b></p><p><b> 3詳細設(shè)計4<
4、/b></p><p><b> 3.1類設(shè)計4</b></p><p> 3.2主模塊設(shè)計5</p><p><b> 4運行結(jié)果7</b></p><p> 4.1 選擇輸入或使用默認矩陣7</p><p> 4.2輸入矩陣并顯示7</p&
5、gt;<p><b> 4.3選擇運算8</b></p><p><b> 4.4退出程序9</b></p><p> 5 課程設(shè)計總結(jié)10</p><p><b> 6參考書目11</b></p><p> 1課程設(shè)計題目與要求</p&g
6、t;<p> 1.1設(shè)計題目:矩陣類</p><p><b> 1.2設(shè)計要求:</b></p><p> 設(shè)計矩陣類,要求實現(xiàn)兩個矩陣的初始化,加減乘,對《和》重載</p><p><b> 有簡單的界面</b></p><p><b> 2總體設(shè)計</b&
7、gt;</p><p><b> 總體功能框架圖</b></p><p><b> 3詳細設(shè)計</b></p><p><b> 3.1類設(shè)計</b></p><p><b> Matrix</b></p><p> 數(shù)據(jù)
8、成員:line,col, *elems</p><p><b> 成員函數(shù):</b></p><p> Matrix( );</p><p> Matrix(int l,int c);</p><p> Matrix(const Matrix &m);</p><p> ~Mat
9、rix();</p><p> void setLine(int l);</p><p> void setCol(int c);</p><p> void setElems();</p><p> int getLine() const;</p><p> int getCol() const;</
10、p><p> Matrix& operator= (const Matrix &m);</p><p> Matrix operator~ () const;</p><p><b> 友原函數(shù): </b></p><p> friend Matrix operator+(const Matrix &
11、amp;a, const Matrix &b);</p><p> friend Matrix operator-(const Matrix &a, const Matrix &b);</p><p> friend Matrix operator*(const Matrix &a, const Matrix &b);</p>&l
12、t;p> friend ostream& operator << (ostream&, Matrix&); </p><p> friend istream& operator >> (istream&, Matrix&);</p><p><b> 3.2主模塊設(shè)計</b></
13、p><p> 1)選擇輸入或使用默認矩陣</p><p><b> 開 始</b></p><p> 選擇輸入或使用默認矩陣</p><p> X ==1 T 輸入矩陣的值 </p><p><b> F</b></p>&
14、lt;p><b> 使用默認矩陣 </b></p><p><b> 結(jié)束 </b></p><p><b> 加法</b></p><p><b> 開 始</b></p><p> 兩個矩陣行列數(shù)相等 T </p&
15、gt;<p><b> F</b></p><p><b> 結(jié)束</b></p><p><b> 4運行結(jié)果</b></p><p> 4.1 選擇輸入或使用默認矩陣</p><p> 圖4—1 選擇輸入或使用默認矩陣</p><
16、p> 4.2輸入矩陣并顯示(如果選擇默認矩陣,則直接顯示)</p><p> 圖4—2輸入矩陣并顯示(如果選擇默認矩陣,則直接顯示)</p><p><b> 4.3選擇運算</b></p><p> 圖4-3-1選擇運算</p><p><b> 矩陣相加:</b></p&g
17、t;<p> 圖4-3-2矩陣相加</p><p><b> 矩陣相減:</b></p><p> 圖4-3-3矩陣相減</p><p><b> 矩陣相乘:</b></p><p> 圖4-3-4矩陣相乘</p><p><b> 矩陣的
18、轉(zhuǎn)置:</b></p><p> 圖4-3-5矩陣的轉(zhuǎn)置</p><p><b> 4.4退出</b></p><p><b> 圖4-4退出</b></p><p><b> 5 課程設(shè)計總結(jié)</b></p><p> 我的課程設(shè)
19、計涉及到了類,構(gòu)造函數(shù)的重載,算數(shù)運算符+,-,*的重載,和輸入輸出運算符的重載,以及數(shù)組的相關(guān)知識,通過這次課程設(shè)計是我對這幾部分知識有了更加充分的認識,并且對如何編寫一個小型的程序有了更加清晰的看法。</p><p> 其中我在進行復(fù)制構(gòu)造函數(shù)之類的進行操作時,開始進行調(diào)試構(gòu)造函數(shù)沒問題,在進行“operator=”運算時一直出錯,經(jīng)過長達一個小時左右的調(diào)試,查錯,最終終于查到錯誤,一個很小的錯誤盡然困惑了
20、1個小時,原來就是在進行賦值構(gòu)造函數(shù)時竟然沒有進行動態(tài)存儲分配空間,生活中很少能夠做到很謹慎的處理問題,這是一個合格的程序員必須克服的問題,自己在以后的一定要在熟練掌握各種知識點的同時好好的注意沒一個細節(jié)。</p><p> 編程思想都是相通的,相信通過這次編程對以后的編程之路會有所幫助。</p><p><b> 6.參考書目</b></p>&l
21、t;p> 1、《C++程序設(shè)計》 譚浩強 清華大學(xué)出版社</p><p> 2、《VISUAL C++6.0完全自學(xué)手冊》 孔鵬 人民郵電出版社</p><p><b> 附件:</b></p><p> #include<iostream></p><p> #include<
22、;iomanip></p><p> using namespace std;</p><p> class Matrix;</p><p> Matrix operator+(const Matrix &a, const Matrix &b);</p><p> Matrix operator-(const M
23、atrix &a, const Matrix &b);</p><p> Matrix operator*(const Matrix &a, const Matrix &b);</p><p> ostream& operator << (ostream&, Matrix&); </p><p>
24、; istream& operator >> (istream&, Matrix&);</p><p> class Matrix</p><p><b> {</b></p><p> friend Matrix operator+(const Matrix &a, const Matrix
25、 &b);</p><p> friend Matrix operator-(const Matrix &a, const Matrix &b);</p><p> friend Matrix operator*(const Matrix &a, const Matrix &b);</p><p> friend ost
26、ream& operator << (ostream&, Matrix&); </p><p> friend istream& operator >> (istream&, Matrix&);</p><p><b> public :</b></p><p> M
27、atrix( );</p><p> Matrix(int l,int c);</p><p> Matrix(const Matrix &m);</p><p> ~Matrix();</p><p> void setLine(int l);</p><p> void setCol(int c)
28、;</p><p> void setElems();</p><p> int getLine() const;</p><p> int getCol() const;</p><p> Matrix& operator= (const Matrix &m);</p><p> Matri
29、x operator~ () const;</p><p><b> private :</b></p><p><b> int line;</b></p><p><b> int col;</b></p><p> int *elems;</p>&
30、lt;p><b> };</b></p><p> Matrix::Matrix( )</p><p> {int l=3,c=3;</p><p> setLine(l);</p><p> setCol(c);</p><p> elems = new int[col*l
31、ine];</p><p><b> }</b></p><p> Matrix::Matrix(int l,int c)</p><p><b> {</b></p><p> setLine(l);</p><p> setCol(c);</p>
32、<p> elems = new int[col*line];</p><p><b> }</b></p><p> Matrix::Matrix(const Matrix &m)</p><p><b> {</b></p><p> line = m.line;&l
33、t;/p><p> col = m.col;</p><p> elems = new int[line * col];</p><p> for(int i = 0;i < line * col;i++)</p><p> elems[i]= m.elems[i];</p><p><b> }
34、</b></p><p> Matrix::~Matrix()</p><p><b> {</b></p><p> delete [] elems;</p><p><b> }</b></p><p> void Matrix::setLine(i
35、nt l)</p><p><b> {</b></p><p><b> line = l;</b></p><p><b> }</b></p><p> void Matrix::setCol(int c)</p><p><b>
36、; {</b></p><p><b> col = c;</b></p><p><b> }</b></p><p> void Matrix::setElems()</p><p><b> {</b></p><p> i
37、nt i,size = col*line;</p><p> for(i = 0;i < size; i++ )</p><p><b> {</b></p><p> elems[i]=i+1;</p><p><b> }</b></p><p><b
38、> }</b></p><p> int Matrix::getLine() const</p><p><b> {</b></p><p> return line;</p><p><b> }</b></p><p> int Matri
39、x::getCol() const</p><p><b> {</b></p><p> return col;</p><p><b> }</b></p><p> ostream& operator << (ostream& output, Matrix&
40、amp; m)</p><p><b> {int i;</b></p><p> for(i = 0 ; i < m.line*m.col;i++)</p><p><b> {</b></p><p> if((i+1)%(m.col)==0)</p><p&g
41、t;<b> {</b></p><p> cout<<setw(5)<<m.elems[i]<<endl;</p><p><b> }</b></p><p><b> else</b></p><p> cout<<
42、;setw(5)<<m.elems[i];</p><p><b> }</b></p><p> return output;</p><p><b> }</b></p><p> istream& operator >> (istream& in
43、put, Matrix& m)</p><p><b> {</b></p><p> int i,size = m.col*m.line;</p><p> for(i = 0;i < size; i++ )</p><p><b> {</b></p><
44、;p> cin>>m.elems[i];</p><p><b> }</b></p><p> return input;</p><p><b> }</b></p><p> Matrix& Matrix::operator=(const Matrix &a
45、mp;m)</p><p><b> {</b></p><p> setLine(m.line);</p><p> setCol(m.col);</p><p> delete []elems;</p><p> elems = new int[line * col];</p&
46、gt;<p> for(int i = 0;i < line * col;i++)</p><p> {elems[i] = m.elems[i];</p><p><b> }</b></p><p> return *this;</p><p><b> }</b>
47、;</p><p> Matrix Matrix::operator~() const</p><p><b> {</b></p><p> Matrix t(col,line);</p><p> for(int i = 0; i < line;i++)</p><p> fo
48、r(int j = 0; j < col; j++)</p><p> t.elems[line*j + i]=elems[col*i + j];</p><p><b> return t;</b></p><p><b> }</b></p><p> Matrix operato
49、r+(const Matrix &a, const Matrix &b)</p><p><b> { </b></p><p> if(a.line != b.line || a.col != b.col)</p><p><b> {</b></p><p> cer
50、r << "兩矩陣的行列數(shù)不相等" << endl;</p><p> exit(EXIT_FAILURE);</p><p><b> }</b></p><p> Matrix c(a.line,a.col);</p><p> for(int i = 0;i &l
51、t; a.line * a.col;i++)</p><p> c.elems[i] = a.elems[i] + b.elems[i];</p><p><b> return c;</b></p><p><b> }</b></p><p> Matrix operator-(cons
52、t Matrix &a, const Matrix &b)</p><p><b> {</b></p><p> if(a.line != b.line || a.col != b.col)</p><p><b> {</b></p><p> cerr <<
53、 "兩矩陣的行列數(shù)不相等!" << endl;</p><p> exit(EXIT_FAILURE);</p><p><b> }</b></p><p> Matrix c(a.line,a.col);</p><p> for(int i = 0;i < a.line
54、 * a.col;i++)</p><p> c.elems[i] = a.elems[i] - b.elems[i];</p><p><b> return c;</b></p><p><b> }</b></p><p> Matrix operator*(const Matrix
55、&a,const Matrix &b)</p><p><b> {</b></p><p> if(a.col != b.line )</p><p><b> {</b></p><p> cerr << "第一個矩陣的列數(shù)與第二個矩陣的行數(shù)不想等!
56、" << endl;</p><p> exit(EXIT_FAILURE);</p><p><b> }</b></p><p> int line = a.line,col = b.col;</p><p> int i,j,k;</p><p> Matri
57、x temp(line,col);</p><p> for(i = 0;i < line * col;i++)</p><p> temp.elems[i] = 0;</p><p> for(i = 0;i < line;i++)</p><p> for(k = 0;k < col;k++)</p>
58、<p> for(j = 0;j < b.line;j++)</p><p> temp.elems[i * col + k] += a.elems[i * col + j] * b.elems[j * col + k];</p><p> return temp;</p><p><b> }</b></p&
59、gt;<p> void desk_1()</p><p> {cout<<" * * * * * * * * * * * * * "<<endl;</p><p> cout<<" *
60、1.輸入兩個3*3的矩陣 *"<<endl;</p><p> cout<<" * 2.使用默認矩陣 *"<<endl;</p><p> cout<<" * * * * * *
61、 * * * * * * *"<<endl;</p><p><b> }</b></p><p> void desk_2(Matrix a,Matrix b)</p><p> { Matrix c(3,3);</p><p> cout<<"
62、 * * * * * * * * * "<<endl;</p><p> cout<<" * 1.兩個矩陣相加 *"<<endl;</p><p> cout<<"
63、 * 2.兩個矩陣相減 *"<<endl;</p><p> cout<<" * 3.兩個矩陣相乘 *"<<endl;</p><p> cout<<"
64、 * 4.矩陣轉(zhuǎn)置 *"<<endl;</p><p> cout<<" * * * * * * * * *"<<endl;</p><p><b> int y;</b></p><p>&l
65、t;b> cin>>y;</b></p><p><b> switch(y)</b></p><p> { case 1:cout << "兩個矩陣相加為:" << endl;</p><p><b> c = a+b;</b></p
66、><p><b> cout<<c;</b></p><p><b> break;</b></p><p> case 2:cout << "兩個矩陣相減為:" << endl;</p><p><b> c = a-b;<
67、;/b></p><p><b> cout<<c;</b></p><p><b> break;</b></p><p> case 3:cout << "兩個矩陣相乘為ª:" << endl;</p><p><
68、;b> c = a*b;</b></p><p><b> cout<<c;</b></p><p><b> break;</b></p><p> case 4:cout << "第一個矩陣轉(zhuǎn)置為:\n" <<(~a)<< e
69、ndl;</p><p> cout << "第二個矩陣轉(zhuǎn)置為:\n" <<(~b)<< endl;</p><p><b> break;</b></p><p><b> }</b></p><p><b> }</
70、b></p><p> int main()</p><p> { desk_1();</p><p><b> int x;</b></p><p><b> cin>>x;</b></p><p><b> if(x==1)<
71、;/b></p><p> { Matrix a(3,3),b(3,3);</p><p> cout << "請輸入第一個矩陣:" << endl;</p><p><b> cin>>a;</b></p><p><b> cout&
72、lt;<a;</b></p><p> cout << "請輸入第二個矩陣:" << endl;</p><p><b> cin>>b;</b></p><p><b> cout<<b; </b></p><
73、p><b> int w=1;</b></p><p><b> while(w)</b></p><p> { desk_2(a,b);</p><p> cout<<"是否繼續(xù) 1繼續(xù)";</p><p> cout<<"
74、 0推出";</p><p><b> cin>>w;}</b></p><p><b> }</b></p><p><b> if(x==2)</b></p><p> { Matrix a,b;</p>
75、<p> a.setElems();</p><p> b.setElems();</p><p> cout << "第一個矩陣為:" << endl;</p><p><b> cout<<a;</b></p><p> cout <&
76、lt; "第二個矩陣為:" << endl;</p><p><b> cout<<b; </b></p><p><b> int w=1;</b></p><p><b> while(w)</b></p><p> {
77、desk_2(a,b);</p><p> cout<<"是否繼續(xù) 1繼續(xù)";</p><p> cout<<" 0推出";</p><p><b> cin>>w;}</b></p><p><b>
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- c++課程設(shè)計——矩陣類
- 導(dǎo)納矩陣課程設(shè)計
- 導(dǎo)納矩陣計算課程設(shè)計
- 矩陣數(shù)乘 課程設(shè)計
- 矩陣數(shù)乘 課程設(shè)計
- 課程設(shè)計---稀疏矩陣應(yīng)用
- c語言課程設(shè)計--矩陣問題
- 稀疏矩陣的運算課程設(shè)計
- 稀疏矩陣的運算課程設(shè)計
- 稀疏矩陣相乘課程設(shè)計報告
- matlab課程設(shè)計--matlab矩陣操作設(shè)計
- 趣味矩陣c語言課程設(shè)計
- 矩陣數(shù)乘 課程設(shè)計.doc
- eda課程設(shè)計--矩陣鍵盤接口設(shè)計
- 課程設(shè)計4乘4矩陣鍵盤設(shè)計
- 數(shù)據(jù)結(jié)構(gòu)--稀疏矩陣課程設(shè)計
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計---稀疏矩陣
- 矩陣鍵盤eda技術(shù)課程設(shè)計
- 煤礦類課程設(shè)計
- 矩陣鍵盤eda技術(shù)課程設(shè)計
評論
0/150
提交評論