【C++实现键盘输入两个矩阵执行加法和乘法运算】

C++实现键盘输入两个矩阵执行加法和乘法运算

 首先声明,初学C++程序有不完善的地方,欢迎大家批评指正。

本程序写了两个简单的函数(矩阵加法MatrixSum()和矩阵乘法MatrixMulti()),然后对其进行调用实现从键盘输入两个矩阵进行运算。
完整代码:

#include<iostream>
 using namespace std;
//矩阵A+B
void MatrixSum(int** a, int** b, int r1, int c1, int r2, int c2)
{
	if (r1 != r2 || c1 != c2)
	{
		cout << "矩阵A和B的行列不同,不能进行加法运算" << endl;
	}
	else
	{
		//为矩阵C开辟内存
		int** c;
		c = new int* [r1];
		for (int i = 0; i < r1; i++)
		{
			if ((c[i] = new int[c1]) == NULL)
				exit(0);
		}
		cout << "----------------矩阵A+B为------------------" << endl;
		for (int i = 0; i < r1; i++)
		{
			for (int j = 0; j < c1; j++)
			{
				c[i][j] = a[i][j] + b[i][j];
				cout << c[i][j] << " ";
			}
			cout << endl;
		}

	}
}
//矩阵A×B
void MatrixMulti(int** a, int** b, int r1, int c1, int r2, int c2)
{
	int i, j, p;
	if (c1 != r2)
	{
		cout << "矩阵A的列数不等于矩阵B的行数,不能进行乘法运算" << endl;
	}
	else
	{
		//为矩阵C开辟内存
		int** c;
		c = new int* [r1];
		for (i = 0; i < r1; i++)
		{
			if ((c[i] = new int[c2]) == NULL)
				exit(0);
		}
		//初始化矩阵C
		for (i = 0; i < r1; i++)
		{
			for (j = 0; j < c2; j++)
				c[i][j] = 0;
		}

		//执行乘法运算
		cout << "----------------矩阵A×B为------------------" << endl;
		for (i = 0; i < r1; i++)
		{
			for (j = 0; j < c2; j++)
			{
				for (p = 0; p < c1; p++)
				{
					c[i][j] += a[i][p] * b[p][j];
				}

			}

		}
		for (i = 0; i < r1; i++)
		{
			for (j = 0; j < c2; j++)
			{
				cout << c[i][j] << " ";
			}
			cout << endl;
		}

	}
}
int main()
{
	int rows1, cols1, rows2, cols2,n;
	int i, j, ** a, ** b;
	//输入矩阵A的行列数
	cout << "矩阵A行数:";
	cin >> rows1;
	cout << "矩阵A列数:";
	cin >> cols1;
	//输入矩阵B的行列数
	cout << "----------输入矩阵B----------" << endl;
	cout << "矩阵B行数:";
	cin >> rows2;
	cout << "矩阵B列数:";
	cin >> cols2;
	//为矩阵A开辟内存
	a = new int* [rows1];
	for (int i = 0; i < rows1; i++)
	{
		if ((a[i] = new int[cols1]) == NULL)
			exit(0);
	}
	//为矩阵B开辟内存
	b = new int* [rows2];
	for (int i = 0; i < rows2; i++)
	{
		if ((b[i] = new int[cols2]) == NULL)
			exit(0);
	}
	//输入矩阵A
	cout << "请输入矩阵A的数据:" << endl;
	for (i = 0; i < rows1; i++)
	{
		for (j = 0; j < cols1; j++)
		{
			cin >> a[i][j];
		}
	}
	//输入矩阵B
	cout << "请输入矩阵B的数据:" << endl;
	for (i = 0; i < rows2; i++)
	{
		for (j = 0; j < cols2; j++)
		{
			cin >> b[i][j];
		}
	}

	cout << "----------------矩阵A为------------------" << endl;
	for (i = 0; i < rows1; i++)
	{
		for (j = 0; j < cols1; j++)
		{
			cout << a[i][j] << " ";
		}
		cout << endl;
	}
	cout << "----------------矩阵B为------------------" << endl;
	for (i = 0; i < rows2; i++)
	{
		for (j = 0; j < cols2; j++)
		{
			cout << b[i][j] << " ";
		}
		cout << endl;
	}
	cout << "----请选择:1矩阵加法运算,2矩阵乘法运算,3退出-----" << endl;
	cin >> n;
	if (n == 1)
	{
		MatrixSum(a, b, rows1, cols1, rows2, cols2);
	}
	else if (n == 2) 
	{
		MatrixMulti(a, b, rows1, cols1, rows2, cols2);
	}
	else
	{
		exit(0);
	}
}

执行结果演示:
在这里插入图片描述

  • 4
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冲冲冲@chong

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值