#include <iostream>
#include <iomanip>
using namespace std;
class Matrix {
public:
void INPUT_MAT();
void OUTPUT_MAT();
void Prepare();
friend void Summation();
friend void Transpose();
friend void Quadrature();
private:
int m, n, i, j, k, r, s;
int Tuple[100][3];
};
void Matrix::INPUT_MAT() {
cout << " 请规定矩阵的行与列:" << endl;
cin >> m >> n;
s = (m * n);
cout << " 矩阵内元素个数为:" << s << endl;
cout << " 请依次输入矩阵的数值:" << endl;
for (i = 0; i < s; i++) {
cout << " 正在输入第" << i + 1 << "个数" << endl;
cin >> r;
Tuple[i][2] = r;
}
cout << " ";
for (j = 0; j < s; j++) {
cout << setw(3) << Tuple[j][2];
if ((j + 1) % n == 0) {
cout << endl;
cout << " ";
}
}
cout << endl;
system("pause");
}
void Matrix::OUTPUT_MAT(){
cout << " 所求的矩阵为:" << endl;
cout << " ";
for (j = 0; j < s; j++) {
cout << setw(3) << Tuple[j][2];
if ((j + 1) % n == 0) {
cout << endl;
cout << " ";
}
}
cout << endl;
}
void Matrix::Prepare() {
for (j = 0; j < m; j++) {
for (k = 0; k < n; k++) {
i = n * j + k;
Tuple[i][0] = (j + 1);
Tuple[i][1] = (k + 1);
}
}
}
void Transpose() {
Matrix Mat_a;
Mat_a.INPUT_MAT();
Matrix Mat_b;
Mat_b.n = Mat_a.m;
Mat_b.m = Mat_a.n;
Mat_b.s = Mat_a.s;
Mat_a.Prepare();
Mat_b.Prepare();
for (int j = 0; j < Mat_a.s; j++) {
for (int k = 0; k < Mat_a.s; k++) {
if ((Mat_a.Tuple[j][0] == Mat_b.Tuple[k][1]) && (Mat_a.Tuple[j][1] == Mat_b.Tuple[k][0])) {
Mat_b.Tuple[k][2] = Mat_a.Tuple[j][2];
break;
}
}
}
Mat_b.OUTPUT_MAT();
}
void Summation() {
sect3:
Matrix Mat_a;
Mat_a.Prepare();
Mat_a.INPUT_MAT();
Matrix Mat_b;
Mat_b.Prepare();
Mat_b.INPUT_MAT();
Matrix Mat_c;
if (Mat_a.s != Mat_b.s) {
cout << " 输入的两个矩阵不能相加" << endl;
goto sect3;
}
else
for (int i = 0; i < Mat_a.s; i++) {
Mat_c.Tuple[i][2] = Mat_a.Tuple[i][2] + Mat_b.Tuple[i][2];
}
Mat_c.s = Mat_a.s;
Mat_c.n = Mat_a.n;
Mat_c.OUTPUT_MAT();
}
void Quadrature() {
re1:
Matrix Mat_a;
Mat_a.Prepare();
Mat_a.INPUT_MAT();
Matrix Mat_b;
Mat_b.Prepare();
Mat_b.INPUT_MAT();
Matrix Mat_c;
Mat_c.s = Mat_a.m * Mat_b.n;
Mat_c.m = Mat_a.m;
Mat_c.n = Mat_b.n;
if (Mat_a.n != Mat_b.m) {
cout << " 两矩阵不可相乘,请重新输入:" << endl;
goto re1;
}
else {
for (int j = 0; j < Mat_a.m; j++) {
for (int k = 0; k < Mat_b.n; k++) {
int sum = 0;
for (int i = 0; i < Mat_a.n; i++) {
sum += Mat_a.Tuple[i + j * Mat_a.n][2] * Mat_b.Tuple[k + i * Mat_b.n][2];
}
Mat_c.Tuple[Mat_a.m * j + k][2] = sum;
}
}
}
Mat_c.OUTPUT_MAT();
}
int main() {
char o;
sect1:
cout << " 请选择所需要进行的功能:" << '\n' << " 转置A 求和B 求积C 退出Q" << endl;
cin >> o;
switch (o) {
case 'A':cout << " 下面进行转置操作,请输入一个矩阵" << endl; Transpose();
break;
case 'B':cout << " 下面进行求和操作,请依次输入两个矩阵" << endl; Summation();
break;
case 'C':cout << " 下面进行求积操作,请依次输入两个矩阵" << endl; Quadrature();
break;
case 'Q':cout << " 系统已退出" << endl; goto sect2;
}
goto sect1;
sect2:
return 0;
}
没有合适的资源?快使用搜索试试~ 我知道了~
矩阵运算_C++_K._矩阵_
![preview](https://csdnimg.cn/release/downloadcmsfe/public/img/white-bg.ca8570fa.png)
共3个文件
exe:1个
docx:1个
cpp:1个
![preview-icon](https://csdnimg.cn/release/downloadcmsfe/public/img/scale.ab9e0183.png)
![star](https://csdnimg.cn/release/downloadcmsfe/public/img/star.98a08eaa.png)
温馨提示
设有两个矩阵A=(aij)m×n,B=(bij)p×q实现要求:⑴ 编写矩阵输入函数INPUT_MAT,通过该函数完成矩阵的输入并返回保存矩阵的三元组 (不能使用全局变量);⑵ 编写矩阵输出函数OUTPUT_MAT,通过该函数完成矩阵的输出,输出的形式是标准的矩阵形式(即二维数组的形式);⑶ 求矩阵的转置,矩阵的转置A’=(aji)n×m,转置前输出原矩阵,转置后输出转置矩阵;⑷ 求矩阵A、B的和。矩阵A和B能够相加的条件是:m=p,n=q;矩阵A和B如果不能相加,请给出提示信息;若能够相加,则求和矩阵C并输出C;C=A+B=(cij)m×n,其中cij=aij+bij⑸ 求矩阵A、B的差。矩阵A和B能够相减的条件是:m=p,n=q;矩阵A和B如果不能相减,请给出提示信息;若能够相减,则求差矩阵C并输出C;C=A-B=(cij)m×n,其中cij=aij-bij⑹ 求矩阵A、B的积。矩阵A和B能够相乘的条件是:p=n;矩阵A和B如果不能相乘,请给出提示信息;若能够相乘,则求积矩阵D并输出D;D=A×B=(dij)m×q,其中dij=∑aik×bkj,k=12……n⑺ 设计一个菜单,具有求矩阵的转置、求矩阵的和、求矩阵的积、退出等基本的功能。在求矩阵的和或求矩阵的积时要求能够先提示输入两个矩阵的,然后再进行相应的操作。
资源详情
资源评论
资源推荐
收起资源包目录
![package](https://csdnimg.cn/release/downloadcmsfe/public/img/package.f3fc750b.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/DOCX.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/EXE.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
共 3 条
- 1
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![cpp](https://img-home.csdnimg.cn/images/20210720083646.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![7z](https://img-home.csdnimg.cn/images/20210720083312.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![text/x-c++](https://img-home.csdnimg.cn/images/20210720083646.png)
![c](https://img-home.csdnimg.cn/images/20210720083646.png)
![application/pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![pptx](https://img-home.csdnimg.cn/images/20210720083543.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![avatar](https://profile-avatar.csdnimg.cn/6668da144f61486cb5cf988ff816ddea_weixin_42691388.jpg!1)
kikikuka
- 粉丝: 72
- 资源: 4772
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![voice](https://csdnimg.cn/release/downloadcmsfe/public/img/voice.245cc511.png)
![center-task](https://csdnimg.cn/release/downloadcmsfe/public/img/center-task.c2eda91a.png)
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback-tip](https://img-home.csdnimg.cn/images/20220527035111.png)
安全验证
文档复制为VIP权益,开通VIP直接复制
![dialog-icon](https://csdnimg.cn/release/downloadcmsfe/public/img/green-success.6a4acb44.png)
评论6