1. 程式人生 > >實驗5補

實驗5補

截圖 淺復制 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 int
getCols() 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補