码迷,mamicode.com
首页 > 其他好文 > 详细

实验5补

时间:2018-05-29 10:23:25      阅读:153      评论:0      收藏:0      [点我收藏+]

标签:val   阵列   析构函数   地址   new   code   make   组元   value   

#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补

标签:val   阵列   析构函数   地址   new   code   make   组元   value   

原文地址:https://www.cnblogs.com/zzy4546/p/9103236.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!