实验5补

Posted zzy4546

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了实验5补相关的知识,希望对你有一定的参考价值。

#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补的主要内容,如果未能解决你的问题,请参考以下文章

C#VS快捷键

C#VS快捷键

C#VS快捷键

Atom编辑器折腾记_(15)JS代码片段补全(插件:javascript-snippets)

201621123002《java程序设计》第九周学习总结

python代码补全工具Kite