?? matrix.operation.txt
字號:
/************************************************************************
功能: 本程序接受用戶輸入兩個(gè)矩陣,并作出計(jì)算選擇,返回計(jì)算值
**************************************************************************/
#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相加,相加結(jié)果存到矩陣C中 ******/
void Madd(double *A, int m, int n, double *B, int M, int N, double *C) {
if (m == M && n == N) { //判斷矩陣的行列是否滿足加法運(yùn)算
for (int i = 0; i < m * n; i++) {
C[i] = A[i] + B[i];
}
} else {
cout<< "您輸入的矩陣維數(shù)不符合做加法運(yùn)算!" << endl;
exit(1); //退出
}
}
/****** 將m*n的矩陣A與M*N的矩陣B相減,相加結(jié)果存到矩陣C中 ******/
void Msub(double *A, int m, int n, double *B, int M, int N, double *C) {
if (m == M && n == N) { //判斷矩陣的行列是否滿足減法運(yùn)算
for (int i = 0; i < m * n; i++) {
C[i] = A[i] - B[i];
}
} else {
cout<< "您輸入的矩陣維數(shù)不符合做減法運(yùn)算!" << endl;
exit(1); //退出
}
}
/****** 將m*n的矩陣A與M*N的矩陣B相乘,相加結(jié)果存到矩陣C中 ******/
void Mmul(double *A, int m, int n, double *B, int M, int N, double *C) {
if (n == M) { //判斷矩陣的行列是否滿足乘法運(yùn)算
for (int i = 0; i < m; i++) {
for (int j = 0; j < N; j++) {
double temp = 0; //臨時(shí)變量存計(jì)算C[i][j]時(shí)產(chǎn)生的中間結(jié)果
for (int k = 0; k < n; k++) {
temp += A[i * n + k] * B[k * N + j];
}
C[i * N +j] = temp;
}
}
} else {
cout<< "您輸入的矩陣維數(shù)不符合做乘法運(yùn)算!" << endl;
exit(1); //退出
}
}
int main(void) {
int select, m, n, M, N; //select記錄用戶選擇運(yùn)算方式,m, n, M, N分別為A,B的行列數(shù)
cout<< "請輸入A的行數(shù)列=";
cin>> m;
cout<< endl <<"請輸入A的列數(shù)=";
cin>> n;
int An = m * n; //A的元素個(gè)數(shù)
double *A;
A = new double[An]; //為A動態(tài)分配一維數(shù)組空間
cout<< "請按行輸入矩陣的元素:" << endl;
for (int i = 0; i < An; i++) { //接受用戶輸入A的元素
cin>> A[i];
}
cout<< "請輸入B的行數(shù)列=";
cin>> M;
cout<< endl <<"請輸入B的列數(shù)=";
cin>> N;
int Bn = M * N; //B的元素個(gè)數(shù)
double *B;
B = new double[Bn]; //為B動態(tài)分配一維數(shù)組空間
cout<< "請按行輸入矩陣的元素:" << endl;
for (int j = 0; j < Bn; j++) { //接受用戶輸入B的元素
cin>> B[j];
}
int Cn = m * N; //C的元素個(gè)數(shù)
double *C; //為C動態(tài)分配一維數(shù)組空間
C = new double[Cn];
cout<< "請選擇矩陣運(yùn)算:[1]+ [2]- [3]*" <<endl; //根據(jù)用戶選擇的運(yùn)算調(diào)用相應(yīng)計(jì)算函數(shù)
cin>> select; //用戶輸入運(yùn)算選擇
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); //顯示計(jì)算結(jié)果
delete []A; delete []B; delete []C; //釋放運(yùn)行中動態(tài)分配的數(shù)組空間
return 0;
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -