请用c++编写一个程序,输入两个矩阵,计算两个矩阵的乘积,并进行输出
你可以参考一下我的这份代码:
#include <iostream>
using namespace std;
void xiangcheng(int mat1[][100], int mat2[][100], int result[][100], int row1, int col1, int row2, int col2) {
// 判断矩阵能否相乘
if (col1 != row2) {
cout << "无法进行矩阵相乘" << endl;
return;
}
// 逐个元素相乘并求和
for (int i = 0; i < row1; i++) {
for (int j = 0; j < col2; j++) {
result[i][j] = 0;
for (int k = 0; k < col1; k++) {
result[i][j] += mat1[i][k] * mat2[k][j];
}
}
}
}
void shuchu(int matrix[][100], int row, int col) {
for (int i = 0; i < row; i++) {
for (int j = 0; j < col; j++) {
cout << matrix[i][j] << " ";
}
cout << endl;
}
}
int main() {
int mat1[100][100], mat2[100][100], result[100][100];
int row1, col1, row2, col2;
// 输入第一个矩阵的行数和列数
cout << "输入第一个矩阵的行数和列数:\n";
cin >> row1 >> col1;
// 输入第一个矩阵的元素
cout << "输入第一个矩阵的元素:" << endl;
for (int i = 0; i < row1; i++) {
for (int j = 0; j < col1; j++) {
cin >> mat1[i][j];
}
}
// 输入第二个矩阵的行数和列数
cout << "输入第二个矩阵的行数和列数:\n";
cin >> row2 >> col2;
// 输入第二个矩阵的元素
cout << "输入第二个矩阵的元素:" << endl;
for (int i = 0; i < row2; i++) {
for (int j = 0; j < col2; j++) {
cin >> mat2[i][j];
}
}
// 计算乘积并输出结果
xiangcheng(mat1, mat2, result, row1, col1, row2, col2);
cout << "两个矩阵的乘积为:\n" << endl;
shuchu(result, row1, col2);
return 0;
}
找了以下当年大一下的时候自己写的代码,水平一般,答主不嫌弃的话将就着看吧。
#include <iostream>
#include <stdio.h>
using namespace std;
// 函数用于计算两个矩阵的乘积
void matrixMultiply(int matrix1[][100], int matrix2[][100], int result[][100], int rows1, int cols1, int cols2) {
for (int i = 0; i < rows1; ++i) {
for (int j = 0; j < cols2; ++j) {
result[i][j] = 0;
for (int k = 0; k < cols1; ++k) {
result[i][j] += matrix1[i][k] * matrix2[k][j];
}
}
}
}
// 函数用于打印矩阵
void printMatrix(int matrix[][100], int rows, int cols) {
for (int i = 0; i < rows; ++i) {
for (int j = 0; j < cols; ++j) {
cout << matrix[i][j] << " ";
}
cout << endl;
}
}
int main() {
int rows1, cols1, rows2, cols2;
cout << "请输入第一个矩阵的行数和列数:";
cin >> rows1 >> cols1;
cout << "请输入第二个矩阵的行数和列数:";
cin >> rows2 >> cols2;
if (cols1 != rows2) {
cout << "无法进行矩阵乘法计算。" << endl;
return 0;
}
int matrix1[100][100];
int matrix2[100][100];
int result[100][100];
cout << "请输入第一个矩阵的元素:" << endl;
for (int i = 0; i < rows1; ++i) {
for (int j = 0; j < cols1; ++j) {
cin >> matrix1[i][j];
}
}
cout << "请输入第二个矩阵的元素:" << endl;
for (int i = 0; i < rows2; ++i) {
for (int j = 0; j < cols2; ++j) {
cin >> matrix2[i][j];
}
}
matrixMultiply(matrix1, matrix2, result, rows1, cols1, cols2);
cout << "两个矩阵的乘积为:" << endl;
printMatrix(result, rows1, cols2);
return 0;
}
#include <iostream>
using namespace std;
int main ()
{
int m,n,a,b,i,j,k;
int **a1;
int **b1;
int **c1;
cout<<"输入第一个矩阵的行数与列数:";
cin>>m>>n;
cout <<"输入第二个矩阵的行数与列数:";
cin>>a>>b;
if(n != a)
{
cout<<"维数不同无法相乘"<<endl;
exit(-1);
}
//动态内存分配
a1 = new int *[m];
for (i=0; i<m; i++)
if ((a1[i] = new int [n])==NULL)
exit (0);
b1 = new int * [a];
for (i = 0;i<a;i++)
if ((b1[i] = new int [b])==NULL)
exit (0);
c1 = new int * [m];
for (i=0; i<m; i++)
if ((c1[i] = new int [b])==NULL)
exit (0);
//创建矩阵a1
cout<<"输入第一个矩阵的元素:";
for (i=0; i<m; i++)
{
for(j=0; j<n; j++)
cin>>a1[i][j];
}
//创建矩阵b1
cout<<"输入第二个矩阵的元素:";
for (i=0; i<a; i++)
{
for (j=0; j<b; j++)
cin>>b1[i][j];
}
//将c1矩阵所有元素赋值为0
for (i=0; i<m; i++)
for (j=0; j<b; j++)
c1[i][j] = 0;
//计算c1
for (i=0; i<m; i++)
for(j=0; j<b; j++)
for (k=0; k<n; k++)
c1[i][j] += a1[i][k]*b1[k][j];
//输出c1
cout<<"输出结果为"<<endl;
for (i=0; i<m; i++)
{
k = 0;
for (j=0; j<b; j++)
{
cout<<c1[i][j];
k = k+1;
if (k==b)
cout<<endl;
else cout<<"\t";
}
}
//释放内存空间
for (i=0; i<m; i++)
delete[]a1[i];
delete []a1;
for (i=0; i<a; i++)
delete[]b1[i];
delete []b1;
for (i = 0;i<m;i++)
delete[]c1[i];
delete []c1;
return 0;
}
https://blog.csdn.net/qq_43015237/article/details/102095652
参考如图
在Python中,你可以确信任何安装了Python解释器的系统都能够执行你的Python程序。而在c++中,你就没有这种特权了。由于c++是一种编译语言,在运行程序之前必须先编译程序,而且必须针对要运行程序的宿主的体系结构来编译它。
当尝试使用Github Actions远程测试代码时,这成为一个重要的问题。由于主机是不同的操作系统和架构,因此需要在虚拟机上测试代码之前编译代码。这是部署代码时需要管理的额外开销。
要计算两个矩阵的乘积,可以使用嵌套循环来进行计算。假设我们有两个矩阵A和B,A的维度为m×n,B的维度为n×p。那么矩阵A和矩阵B的乘积C的维度为m×p,C中的每个元素c[i][j]都是由A的第i行和B的第j列对应元素的乘积之和得到的。
以下是一个C++程序示例,用于计算两个矩阵的乘积并进行输出:
#include <iostream>
#include <vector>
using namespace std;
vector<vector<int>> matrixMultiplication(vector<vector<int>>& matrixA, vector<vector<int>>& matrixB) {
int m = matrixA.size();
int n = matrixA[0].size();
int p = matrixB[0].size();
vector<vector<int>> result(m, vector<int>(p, 0));
for (int i = 0; i < m; i++) {
for (int j = 0; j < p; j++) {
int sum = 0;
for (int k = 0; k < n; k++) {
sum += matrixA[i][k] * matrixB[k][j];
}
result[i][j] = sum;
}
}
return result;
}
void printMatrix(const vector<vector<int>>& matrix) {
for (const auto& row : matrix) {
for (const auto& element : row) {
cout << element << " ";
}
cout << endl;
}
}
int main() {
vector<vector<int>> matrixA = {{1, 2, 3}, {4, 5, 6}};
vector<vector<int>> matrixB = {{7, 8}, {9, 10}, {11, 12}};
vector<vector<int>> result = matrixMultiplication(matrixA, matrixB);
printMatrix(result);
return 0;
}
这个程序首先定义了一个函数matrixMultiplication
,用于计算矩阵乘积。函数接受两个参数:matrixA
和matrixB
,分别代表两个矩阵。函数返回一个新的矩阵作为结果。
在matrixMultiplication
函数中,我们首先获取矩阵A和矩阵B的维度,并根据维度创建一个结果矩阵C。然后,通过三重嵌套循环来计算矩阵C的每个元素。最后,将结果矩阵C返回。
在main
函数中,我们定义了两个示例矩阵matrixA
和matrixB
,并调用matrixMultiplication
函数来计算它们的乘积。然后,使用printMatrix
函数来打印结果矩阵。
在运行程序时,输出将是:
58 64
139 154
这是矩阵A和矩阵B的乘积的结果。
请注意,这只是一个简单的示例程序,假设两个输入矩阵的维度是符合要求的。在实际情况中,您可能需要添加错误检查和边界条件来处理不同维度的矩阵。