C++矩阵相乘

//矩阵相乘
#include<iostream>
using namespace std;

int rowsA;
int colsA;
int rowsB;
int colsB;
int ** matrixA = new int *[rowsA];
int ** matrixB = new int *[rowsB];
int ** matrixAB = new int *[rowsA];
void OutputMatrix(int ** matrix,int rows,int cols) ;
void ProductOfMatrix(int ** matrixA, int ** matrixB) ;

int main() {
    cout << "输入矩阵A的行:";
    cin >> rowsA;
    cout << "输入矩阵A的列:";
    cin >> colsA;
    rowsB = colsA;
    cout << "输入矩阵B的列:";
    cin >> colsB;
    
    for (int i = 0; i < rowsA; i++)
    {
        matrixA[i] = new int[colsA];
        cout << "\n输入矩阵A的第"<<i+1<<"行数据(该行共有" << colsA << "个数据) : \n";
        for (int j = 0; j < colsA; j++)
        {
            cin >> matrixA[i][j];
        }
    }
    
    for (int i = 0; i < rowsB; i++)
    {
        matrixB[i] = new int[colsB];
        cout << "\n输入矩阵B的第"<<i+1<<"行数据(该行共有" << colsB << "个数据) : \n";
        for (int j = 0; j < colsB; j++)
        {
            cin >> matrixB[i][j];
        }
    }
    
    ProductOfMatrix(matrixA, matrixB);
    cout << "【矩阵A】\n";
    OutputMatrix(matrixA, rowsA, colsA);
    cout << "【矩阵B】\n";
    OutputMatrix(matrixB, rowsB, colsB);
    cout << "【A × B】\n";
    OutputMatrix(matrixAB, rowsA, colsB);
}


void ProductOfMatrix(int ** matrixA, int ** matrixB) 
{
    for (int i = 0; i < rowsA; i++)
    {
        matrixAB[i] = new int[colsB];
        for (int j = 0; j < colsB; j++)
        {
            matrixAB[i][j] = 0;
            for (int m = 0; m < colsA; m++)
            {
                matrixAB[i][j] += matrixA[i][m] * matrixB[m][j];
            }
        }
    } }


void OutputMatrix(int ** matrix,int rows,int cols) 
{
    for (int i = 0; i < rows; i++)
    {
        for (int j = 0; j < cols; j++)
            cout << matrix[i][j] << "\t";
        cout << endl;
    }
    cout << endl; }


posted @ 2022-03-23 10:19  July世海  阅读(256)  评论(0)    收藏  举报