📄 matrix.operation.txt
字号:
/************************************************************************
功能: 本程序接受用户输入两个矩阵,并作出计算选择,返回计算值
**************************************************************************/
#include "iostream.h"
#include "iomanip.h"
#include "stdlib.h"
/****** 将m*N的矩阵C显示出来 ******/
void Print(double *C, int m, int N) {
for (int i = 0; i < m; i++) {
for (int j = 0; j < N; j++) {
cout<< setw(10) << C[i * N + j];
}
cout<< endl; //输出一行后换行
}
}
/****** 将m*n的矩阵A与M*N的矩阵B相加,相加结果存到矩阵C中 ******/
void Madd(double *A, int m, int n, double *B, int M, int N, double *C) {
if (m == M && n == N) { //判断矩阵的行列是否满足加法运算
for (int i = 0; i < m * n; i++) {
C[i] = A[i] + B[i];
}
} else {
cout<< "您输入的矩阵维数不符合做加法运算!" << endl;
exit(1); //退出
}
}
/****** 将m*n的矩阵A与M*N的矩阵B相减,相加结果存到矩阵C中 ******/
void Msub(double *A, int m, int n, double *B, int M, int N, double *C) {
if (m == M && n == N) { //判断矩阵的行列是否满足减法运算
for (int i = 0; i < m * n; i++) {
C[i] = A[i] - B[i];
}
} else {
cout<< "您输入的矩阵维数不符合做减法运算!" << endl;
exit(1); //退出
}
}
/****** 将m*n的矩阵A与M*N的矩阵B相乘,相加结果存到矩阵C中 ******/
void Mmul(double *A, int m, int n, double *B, int M, int N, double *C) {
if (n == M) { //判断矩阵的行列是否满足乘法运算
for (int i = 0; i < m; i++) {
for (int j = 0; j < N; j++) {
double temp = 0; //临时变量存计算C[i][j]时产生的中间结果
for (int k = 0; k < n; k++) {
temp += A[i * n + k] * B[k * N + j];
}
C[i * N +j] = temp;
}
}
} else {
cout<< "您输入的矩阵维数不符合做乘法运算!" << endl;
exit(1); //退出
}
}
int main(void) {
int select, m, n, M, N; //select记录用户选择运算方式,m, n, M, N分别为A,B的行列数
cout<< "请输入A的行数列=";
cin>> m;
cout<< endl <<"请输入A的列数=";
cin>> n;
int An = m * n; //A的元素个数
double *A;
A = new double[An]; //为A动态分配一维数组空间
cout<< "请按行输入矩阵的元素:" << endl;
for (int i = 0; i < An; i++) { //接受用户输入A的元素
cin>> A[i];
}
cout<< "请输入B的行数列=";
cin>> M;
cout<< endl <<"请输入B的列数=";
cin>> N;
int Bn = M * N; //B的元素个数
double *B;
B = new double[Bn]; //为B动态分配一维数组空间
cout<< "请按行输入矩阵的元素:" << endl;
for (int j = 0; j < Bn; j++) { //接受用户输入B的元素
cin>> B[j];
}
int Cn = m * N; //C的元素个数
double *C; //为C动态分配一维数组空间
C = new double[Cn];
cout<< "请选择矩阵运算:[1]+ [2]- [3]*" <<endl; //根据用户选择的运算调用相应计算函数
cin>> select; //用户输入运算选择
if (select == 1) Madd(A, m, n, B, M, N, C);
if (select == 2) Msub(A, m, n, B, M, N, C);
if (select == 3) Mmul(A, m, n, B, M, N, C);
Print(C, m, N); //显示计算结果
delete []A; delete []B; delete []C; //释放运行中动态分配的数组空间
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -