5.16

 1 #include <iostream>
 2 #include <iomanip>
 3 using namespace std;
 4 class matrix{
 5 private:
 6     int row,column;
 7     int **mat;
 8 public:
 9     matrix(const matrix& mx){
10         this->row=mx.row;
11         this->column=mx.column;
12         this->mat=new int*[row];
13         for (int i = 0; i <row ; ++i) {
14             this->mat[i]=new int[column];
15             for (int j = 0; j <column ; ++j) {
16                 this->mat[i][j]=mx.mat[i][j];
17             }
18         }
19     }
20     matrix(int r,int c){
21         row=r;
22         column=c;
23             mat=new int*[row];
24             for (int i = 0; i <row ; ++i) {
25                 mat[i]=new int[column];
26                 for (int j = 0; j <column ; ++j) {
27                     mat[i][j]=0;
28                 }
29             }
30     }
31     ~matrix(){
32         for (int i = 0; i <row ; ++i) {
33             delete []mat[i];
34         }
35         delete []mat;
36     }
37     void read(){
38         for (int j = 0; j <row ; ++j) {
39             for (int i = 0; i <column ; ++i) {
40                 cin>>mat[j][i];
41             }
42         }
43     }
44     matrix operator*(matrix& mt){
45         if(this->row==1&&this->column==1){
46             for (int i = 0; i < mt.row; ++i) {
47                 for (int j = 0; j <mt.column ; ++j) {
48                     mt.mat[i][j]=this->mat[0][0]*mt.mat[i][j];
49                 }
50             }
51             return mt;
52         }else{
53             matrix rs(this->row,mt.column);
54             for (int i = 0; i < this->row; ++i) {
55                 for (int j = 0; j <mt.column ; ++j) {
56                     for (int k = 0; k <mt.row ; ++k) {
57                         rs.mat[i][j]+=this->mat[i][k]*mt.mat[k][j];
58                     }
59                 }
60             }
61             return rs;
62         }
63     }
64     void display(){
65         for (int i = 0; i <row ; ++i) {
66             for (int j = 0; j <column ; ++j) {
67                 cout<<setw(10)<<mat[i][j];
68             }
69             cout<<endl;
70         }
71     }
72 };
73 int main()
74 {
75     int r,c;
76     cin>>r>>c;
77     matrix m1(r,c);
78     m1.read();
79     int r1,c1;
80     cin>>r1>>c1;
81     matrix m2(r1,c1);
82     m2.read();
83     if(c==r1||r==1&&c==1){
84         matrix m3=m1*m2;
85         m3.display();
86     }
87     else{
88         cout<<"Invalid Matrix multiplication!";
89     }
90     return 0;
91 }

 

posted @ 2023-05-16 21:18  Code13  阅读(34)  评论(0编辑  收藏  举报