矩陣數乘 課程設計_第1頁
已閱讀1頁,還剩5頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、<p>  C++課程設計實驗報告</p><p>  姓名 仲亮亮 學號 0511590122 班級 05115901 任課教師 肖亮 時間 2006-9-22 </p><p>  教師指定題目 矩陣數乘 評定難易級別 B </p>

2、;<p>  實驗報告成績 </p><p><b>  實驗內容:</b></p><p><b>  矩陣數乘</b></p><p>  1.1 程序功能介紹</p><p>  定義一個向量類,里面的元素是模板形式,定義了有關向量類的的各種屬性,方法及運算符重

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

4、矩陣的數乘,加減,賦值的運算,要求用整型矩陣和浮點型矩陣分別演算。</p><p>  更改函數結構,可由用戶自己選擇輸入矩陣數據的具體方法,程序可以連續(xù)運行,直到選擇退出為止</p><p><b>  3.基本數據結構</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_; //矩陣的行數</p><p>  int refcnt;//被引用次數</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();//********************************************默認的構造</p><p>  CMatrix(int xsize,int ysize,T ini

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

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

10、st;//**************************************返回行數</p><p>  int col() const;//**************************************返回列數</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);//**************************拷貝函數</p><p>  friend std::ostream & operator<<(std::ostream &s,const CMatrix<T> &mat);//重載輸出函數</p><p>  friend std::istream &

13、; operator>>(std::istream &s,const CMatrix<T> &mat);//重載輸入函數</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); //**數乘</p><p><b>  }</b></p><p>  2. 源程序結構流程框圖與說明(含新增子函數的結構框圖)</p><p

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

17、 (6)矩陣由文件輸入</p><p>  5. 課程設計遇到的技術問題與解決思路</p><p>  問題1:怎樣處理矩陣由文件輸入的問題?</p><p>  解決辦法:首先定義下面的函數</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<<"不能打開輸入文件!"<<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>  通過此函數可實現(xiàn)矩陣由文件輸入,不過輸入的文件

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

24、> operator*(const CMatrix<int> &mat,int val)//數乘</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)//數乘</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. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論