⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 matrix.operation.txt

📁 用户输入两个矩阵的维数和元素
💻 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 + -