實驗5補
阿新 • • 發佈:2018-05-29
截圖 淺復制 bsp AS http name 設置 matrix 函數
#ifndef MATRIX_H #define MATRIX_H class Matrix { public: Matrix(int n); // 構造函數,構造一個n*n的矩陣 Matrix(int n, int m); // 構造函數,構造一個n*m的矩陣 Matrix(const Matrix &X); // 復制構造函數,使用已有的矩陣X構造 ~Matrix(); //析構函數 void setMatrix(const float *pvalue); // 矩陣賦初值,用pvalue指向的內存塊數據為矩陣賦值void printMatrix() const; // 顯示矩陣 inline float &element(const int i, int j); //返回矩陣第i行第j列元素的值 inline float element(int i, int j) const;// 返回矩陣第i行第j列元素的值 void setElement(int i, int j, int value); //設置矩陣第i行第j列元素值為value inline int getLines() const; //返回矩陣行數 inline intgetCols() const;//返回矩陣列數 private: int lines; // 矩陣行數 int cols; // 矩陣列數 float *p; // 指向存放矩陣數據的內存塊的首地址 }; #endif
#include <iostream> #include "matrix.h" using namespace std; int i,j; Matrix::Matrix(int n):lines(n),cols(n) { p=new float[lines*cols]; } Matrix::Matrix(int n,int m):lines(n),cols(m) { p=new float[lines*cols]; } Matrix::Matrix(const Matrix &x):lines(x.lines),cols(x.cols) { p=new float[lines*cols]; for(i=0;i<lines*cols;i++) p[i]=x.p[i]; } Matrix::~Matrix() { delete[] p; } void Matrix::setMatrix(const float *pvalue) { for(i=0;i<lines*cols;i++) p[i]=pvalue[i]; } void Matrix::printMatrix() const { for(i=0;i<lines;i++) { for(j=0;j<cols;j++) cout<<p[i*lines+j]<<" "; cout<<endl; } } inline float Matrix::element(int i,int j) const { cout<<p[(i-1)*lines+j-1]<<endl; } void Matrix::setElement(int i, int j, int value) { p[(i-1)*lines+j-1]=value; } inline int Matrix::getLines() const { return lines; } inline int Matrix::getCols() const { return cols; }
#include <iostream> #include "matrix.h" using namespace std; int i,j; Matrix::Matrix(int n):lines(n),cols(n) { p=new float[lines*cols]; } Matrix::Matrix(int n,int m):lines(n),cols(m) { p=new float[lines*cols]; } Matrix::Matrix(const Matrix &x):lines(x.lines),cols(x.cols) { p=new float[lines*cols]; for(i=0;i<lines*cols;i++) p[i]=x.p[i]; } Matrix::~Matrix() { delete[] p; } void Matrix::setMatrix(const float *pvalue) { for(i=0;i<lines*cols;i++) p[i]=pvalue[i]; } void Matrix::printMatrix() const { for(i=0;i<lines;i++) { for(j=0;j<cols;j++) cout<<p[i*lines+j]<<" "; cout<<endl; } } inline float Matrix::element(int i,int j) const { cout<<p[(i-1)*lines+j-1]<<endl; } void Matrix::setElement(int i, int j, int value) { p[(i-1)*lines+j-1]=value; } inline int Matrix::getLines() const { return lines; } inline int Matrix::getCols() const { return cols; }
#include <iostream> #include "matrix.h" using namespace std; int main() { int n; cout<<"輸入行數:"<<endl; cin>>n; Matrix A(n); float a[n*n]; cout<<"輸入矩陣A:"<<endl; for(int i=0;i<n*n;i++) cin>>a[i]; A.setMatrix(a); A.printMatrix(); int m; cout<<"輸入行列:"<<endl; cin>>n>>m; Matrix B(n,m); float b[n*m]; cout<<"輸入矩陣B:"<<endl; for(int i=0;i<n*m;i++) cin>>b[i]; B.setMatrix(b); B.printMatrix(); cout<<"返回a矩陣第2行第2列"<<endl; cout<<A.element(2,2)<<endl; cout<<"改變第1行第2列值"<<endl; A.setElement(2,2,3); cout<<"返回a矩陣第2行第2列"<<endl; cout<<A.element(2,2)<<endl; cout<<"返回a矩陣的行數:"<<endl; cout<<A.getLines()<<endl; cout<<"返回a矩陣的列數:"<<endl; cout<<A.getCols()<<endl; return 0; }
這個是上一次得矩陣類的問題,但自己當時對深復制,淺復制還未看懂所以未能及時完成,此外在結合指針輸出數組元素我用的還不是太熟練 ,此外,在多文件編寫 和const上可能還有一點問題,以致我經常會出現截圖一的錯誤會彈出一個makefile.win。想問下出現這種情況怎麽辦
實驗5補