矩陣數(shù)乘 課程設(shè)計(jì)_第1頁(yè)
已閱讀1頁(yè),還剩5頁(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、<p>  C++課程設(shè)計(jì)實(shí)驗(yàn)報(bào)告</p><p>  姓名 仲亮亮 學(xué)號(hào) 0511590122 班級(jí) 05115901 任課教師 肖亮 時(shí)間 2006-9-22 </p><p>  教師指定題目 矩陣數(shù)乘 評(píng)定難易級(jí)別 B </p>

2、;<p>  實(shí)驗(yàn)報(bào)告成績(jī) </p><p><b>  實(shí)驗(yàn)內(nèi)容:</b></p><p><b>  矩陣數(shù)乘</b></p><p>  1.1 程序功能介紹</p><p>  定義一個(gè)向量類,里面的元素是模板形式,定義了有關(guān)向量類的的各種屬性,方法及運(yùn)算符重

3、載函數(shù)。根據(jù)向量處理的程序?qū)崿F(xiàn)矩陣數(shù)乘。</p><p><b>  2序設(shè)計(jì)要求</b></p><p>  利用已知的向量類對(duì)象定義一個(gè)矩陣類,矩陣類的數(shù)據(jù)是向量子對(duì)象同樣定義了矩陣類的的各種屬性,方法及運(yùn)算符重載函數(shù)。</p><p>  完善成員函數(shù),使矩陣可以由文件輸入,具體格式自定。</p><p>  完成

4、矩陣的數(shù)乘,加減,賦值的運(yùn)算,要求用整型矩陣和浮點(diǎn)型矩陣分別演算。</p><p>  更改函數(shù)結(jié)構(gòu),可由用戶自己選擇輸入矩陣數(shù)據(jù)的具體方法,程序可以連續(xù)運(yùn)行,直到選擇退出為止</p><p><b>  3.基本數(shù)據(jù)結(jié)構(gòu)</b></p><p><b>  矩陣類的模板:</b></p><p>

5、  class CMatrix</p><p><b>  {</b></p><p>  protected:</p><p>  struct mrep</p><p><b>  {</b></p><p>  Vector<T> **Vp; //

6、組成矩陣的指針</p><p>  int m_; //矩陣的行數(shù)</p><p>  int refcnt;//被引用次數(shù)</p><p>  T **tmppointer;</p><p><b>  }*p;</b></p><p><b>  public:</

7、b></p><p>  Vector<T> ** begin() const {return p->Vp;};</p><p>  CMatrix();//********************************************默認(rèn)的構(gòu)造</p><p>  CMatrix(int xsize,int ysize,T ini

8、t=0);//****************構(gòu)造函數(shù)</p><p>  CMatrix(int m,const Vector<T> *vec);//************構(gòu)造函數(shù)</p><p>  CMatrix(CMatrix<T> &mat); //*****************************拷貝構(gòu)造函數(shù)</p>&l

9、t;p>  ~CMatrix(); //******************************************析構(gòu)函數(shù)</p><p>  CMatrix<T> & operator=(const CMatrix<T> &mat);//**重載賦值運(yùn)算符——矩陣賦矩陣 </p><p>  int row() con

10、st;//**************************************返回行數(shù)</p><p>  int col() const;//**************************************返回列數(shù)</p><p>  Vector<T> & operator []( int i);//***********************

11、重載[]</p><p>  operator T **();//****************************************重載**</p><p>  void ReadFromFile();//********************************從文件中讀入矩陣</p><p>  friend CMatrix cpy(CMat

12、rix &mat);//**************************拷貝函數(shù)</p><p>  friend std::ostream & operator<<(std::ostream &s,const CMatrix<T> &mat);//重載輸出函數(shù)</p><p>  friend std::istream &

13、; operator>>(std::istream &s,const CMatrix<T> &mat);//重載輸入函數(shù)</p><p>  friend CMatrix<T> operator+(const CMatrix<T> &mat1,const CMatrix<T> &mat2);</p><

14、p>  friend CMatrix<T> operator-(const CMatrix<T> &mat1,const CMatrix<T> &mat2);</p><p>  friend CMatrix<T> operator*(CMatrix<T> &mat1,CMatrix<T> &mat2);

15、//矩陣乘法</p><p>  friend CMatrix<T> operator*(const CMatrix<T> &mat,T val); //**數(shù)乘</p><p><b>  }</b></p><p>  2. 源程序結(jié)構(gòu)流程框圖與說(shuō)明(含新增子函數(shù)的結(jié)構(gòu)框圖)</p><p

16、><b>  3.程序運(yùn)行界面</b></p><p> ?。?)初始界面 (2)矩陣相加</p><p> ?。?)矩陣相減 (4)矩陣1的數(shù)乘</p><p> ?。?)浮點(diǎn)型矩陣的1的數(shù)乘

17、 (6)矩陣由文件輸入</p><p>  5. 課程設(shè)計(jì)遇到的技術(shù)問(wèn)題與解決思路</p><p>  問(wèn)題1:怎樣處理矩陣由文件輸入的問(wèn)題?</p><p>  解決辦法:首先定義下面的函數(shù)</p><p>  void CMatrix<T>::ReadFromFile()//**********

18、********************從文件中讀入矩陣</p><p><b>  {</b></p><p>  char filename[256];</p><p>  cin>>filename;</p><p>  ifstream infile;</p><p>  /

19、/cout<<"****";</p><p>  int row,col;</p><p>  infile.open(filename,ios::in);</p><p>  if(!infile)</p><p><b>  {</b></p><p>  c

20、out<<"不能打開(kāi)輸入文件!"<<endl;</p><p><b>  exit(1);</b></p><p><b>  };</b></p><p>  infile>>row>>col;</p><p>  CMatri

21、x<T> Vp(row,col,0);</p><p>  //infile>>Vp[0][0];</p><p>  //cout<<Vp[0][0]<<"*****"<<endl;</p><p>  for(int i=0;i<row;i++)</p>&l

22、t;p>  for(int j=0;j<col;j++)</p><p>  infile>>Vp[i][j];</p><p><b>  *this=Vp;</b></p><p><b>  }</b></p><p>  通過(guò)此函數(shù)可實(shí)現(xiàn)矩陣由文件輸入,不過(guò)輸入的文件

23、中的數(shù)據(jù)不是單獨(dú)的矩陣的數(shù)據(jù),必須和主函數(shù)運(yùn)行中的數(shù)據(jù)相對(duì)應(yīng),我的程序中就是這個(gè)樣子。首先的輸入矩陣的行數(shù)和列數(shù),然后才可以是矩陣的數(shù)據(jù),不然的話,程序到著地方就無(wú)法運(yùn)行下去了。</p><p>  問(wèn)題2:怎樣實(shí)現(xiàn)矩陣的數(shù)乘,并用浮點(diǎn)型和整型分別演算?</p><p>  解決辦法:首先定義一個(gè)矩陣數(shù)乘的成員函數(shù):</p><p>  CMatrix<int

24、> operator*(const CMatrix<int> &mat,int val)//數(shù)乘</p><p><b>  {</b></p><p>  CMatrix<int> temp; </p><p><b>  temp=mat;</b></p><p

25、>  for(int i(0);i<mat.p->m_;i++)</p><p>  *(temp.p->Vp[i])=*(mat.p->Vp[i])*val;</p><p>  return temp;</p><p><b>  }</b></p><p>  CMatrix<d

26、ouble> operator*(const CMatrix<double>&mat,double val)//數(shù)乘</p><p><b>  {</b></p><p>  CMatrix<double> temp; </p><p><b>  temp=mat;</b><

27、/p><p>  for(int i(0);i<mat.p->m_;i++)</p><p>  *(temp.p->Vp[i])=*(mat.p->Vp[i])*val;</p><p>  return temp;</p><p><b>  }</b></p><p>&

溫馨提示

  • 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ù)僅提供信息存儲(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)論