出题 test

#include <bits/stdc++.h>
using namespace std;

#define N 100

class Matrix 
{
private:
    int data[N][N];// 存放矩阵
public:
    // n行m列的矩阵
    int n,m;
    // 无参构造函数. n和data数组均置零
    Matrix();
    // 有参构造函数,赋值行值n和列值m data数组元素均置零
    Matrix(int n,int m);
    // 有参构造函数,设置对象的行列值和矩阵元素
    Matrix(int n,int m,int data[N][N]);
    // 调用者对象与相乘,返回Matrix对象
    Matrix multipyMatrix(Matrix mat1);
    // 输出调用者对象的有关数据
    void outputMatrix();
};

Matrix::Matrix() 
{
    n = 0;
    for(int i=0; i<N; i++) 
    {
        for(int j=0; j<N; j++) 
        {
            data[i][j] = 0;
        }
    }
}



Matrix::Matrix(int n,int m) 
{
    Matrix();
    this->n = n;
    this->m = m;
}


Matrix::Matrix(int n,int m,int data[N][N]) 
{
    this->n = n;
    this->m = m;
    for(int i=1;i<=n;i++) 
    {
        for(int j=1;j<=m;j++) 
        {
            this->data[i][j] = data[i][j];
        }
    }
}

Matrix Matrix::multipyMatrix(Matrix mat1)
{
    int n = this->n;
    int m = this->m;
    Matrix res(n, mat1.m);
    for(int i=1; i<=n; i++) 
    {
        for(int j=1; j<=mat1.m; j++)
        {
            for(int k=1; k<=m; k++)
            {
                res.data[i][j]  = (res.data[i][j] + this->data[i][k] * mat1.data[k][j]);
            }
        }
    }
    return res;
}

void Matrix::outputMatrix() 
{
    for(int i=1; i<= this->n; i++) 
    {
        for(int j=1; j<= this->m; j++)
            cout<< this->data[i][j]<<" ";
        cout<<endl;
    }
}

void randInput() {
    int n = rand()%4;
    while(n == 0) {
        n = rand()%4;
    }
    int m = rand()%4;
    while(m == 0) {
        m = rand()%4;
    }
    
    int k = rand()%4;
    while(k == 0) {
        k = rand()%4;
    }
    cout<<n<<" "<<m <<" "<<k<<endl;
    
    for(int i=1;i<=n;i++) {
        for(int j=1;j<=m;j++) {
            int x = rand()%20;
            //data1[i][j] = x;
            cout<<x <<" ";
        }
        cout<<endl;
    }
    for(int i=1;i<=m;i++) {
        for(int j=1;j<=k;j++) {
            int x = rand()%20;
            //data[i][j] = x;
            cout<<x <<" ";
        }
        cout<<endl;
    }
}


int main()
{
    freopen("in.txt","w",stdout);
    srand(time(NULL));
    randInput();
    /*
    //freopen("in.txt","r",stdin);
    //int T = 5;
    //while(T--) {
        //randInput();
        //cout<<endl;
        int n,m,k;cin>>n>>m>>k;
        int data[N][N];
        for(int i=1;i<=n;i++) {
            for(int j=1;j<=m;j++) {
                cin>>data[i][j];
            }
        }
        Matrix mat1(n,m,data);
        for(int i=1;i<=m;i++) {
            for(int j=1;j<=m;j++) {
                cin>>data[i][j];
            }
        }
        Matrix mat2(m,k,data);
        Matrix mat3 = mat1.multipyMatrix(mat2);
        mat3.outputMatrix();
    */
    //}
    return 0;
}

猜你喜欢

转载自www.cnblogs.com/Draymonder/p/10070492.html
今日推荐