矩阵运算

  1 #include<iostream>
  2 using namespace std;
  3 struct Juzhen
  4 {
  5     int hang;
  6     int lie;
  7     int **b;  
  8     
  9 
 10 };
 11 
 12 
 13 
 14 void main(){
 15     while(1)
 16     {
 17     Juzhen A;
 18     Juzhen B;
 19     Juzhen C;
 20 
 21     while(1){
 22         int choice;
 23         cout<<"1.矩阵乘法    2.矩阵加法    3矩阵减法"<<endl;
 24         
 25         cin>>choice;
 26         if(choice==1)
 27         {
 28         
 29             cout<<"请输入你第一个矩阵的行数和列数";
 30         cin>>A.hang>>A.lie;
 31         cout<<"请输入第二个矩阵的列数";
 32         B.hang=A.lie;
 33             cin>>B.lie;
 34             cout<<"请输入一个"<<A.hang<<"*"<<A.lie<<"的矩阵";
 35             A.b=new int*[A.hang];       //分配一个指针数组,将其首地址保存在b中                                                    
 36  
 37             for(int i=0;i<A.hang;i++)             //为指针数组的每个元素分配一个数组
 38                {
 39                   A.b[i]=new int[A.lie];
 40                }
 41 
 42             for(int i=0;i<A.hang;i++)     
 43             {
 44                 for(int j=0;j<A.lie;j++)     
 45                  {
 46                      cin>>A.b[i][j];
 47                  }
 48 
 49 
 50             }
 51             cout<<"请输入一个"<<B.hang<<"*"<<B.lie<<"的矩阵";
 52             B.b=new int*[B.hang];       //分配一个指针数组,将其首地址保存在b中                                                    
 53  
 54             for(int i=0;i<B.hang;i++)             //为指针数组的每个元素分配一个数组
 55                {
 56                   B.b[i]=new int[B.lie];
 57                }
 58 
 59             for(int i=0;i<B.hang;i++)     
 60             {
 61                 for(int j=0;j<B.lie;j++)     
 62                  {
 63                      cin>>B.b[i][j];
 64                  }
 65 
 66 
 67             }
 68         
 69 
 70             C.b=new int*[A.hang];       //分配一个指针数组,将其首地址保存在b中                                                    
 71  
 72             for(int i=0;i<A.hang;i++)             //为指针数组的每个元素分配一个数组
 73                {
 74                   C.b[i]=new int[B.lie];
 75                }
 76 
 77         for(int i=0; i<A.hang; i++)
 78         {
 79         for(int j=0; j<B.lie; j++) 
 80         { 
 81             C.b[i][j]=0;
 82             for(int x=0; x<A.lie; x++)
 83             {
 84                 C.b[i][j]=C.b[i][j]+A.b[i][x]*B.b[x][j]; 
 85             }
 86           }
 87     }
 88         cout<<"运算结果是";
 89         for(int i=0; i<A.hang; i++)
 90         {
 91         for(int j=0; j<B.lie; j++) 
 92         {
 93             cout<<C.b[i][j]<<"  ";
 94         }
 95         cout<<endl;
 96         }
 97         }else if(choice==2)
 98         {
 99         
100                         
101             cout<<"请输入矩阵的行数和列数";
102         cin>>A.hang>>A.lie;
103         B.hang=A.hang;
104         B.lie=A.lie;
105         C.hang=A.hang;
106         C.lie=A.lie;
107     
108     
109             cout<<"请输入一个"<<A.hang<<"*"<<A.lie<<"的矩阵";
110             A.b=new int*[A.hang];       //分配一个指针数组,将其首地址保存在b中                                                    
111  
112             for(int i=0;i<A.hang;i++)             //为指针数组的每个元素分配一个数组
113                {
114                   A.b[i]=new int[A.lie];
115                }
116 
117             for(int i=0;i<A.hang;i++)     
118             {
119                 for(int j=0;j<A.lie;j++)     
120                  {
121                      cin>>A.b[i][j];
122                  }
123 
124 
125             }
126             cout<<"请输入一个"<<B.hang<<"*"<<B.lie<<"的矩阵";
127             B.b=new int*[B.hang];       //分配一个指针数组,将其首地址保存在b中                                                    
128  
129             for(int i=0;i<B.hang;i++)             //为指针数组的每个元素分配一个数组
130                {
131                   B.b[i]=new int[B.lie];
132                }
133 
134             for(int i=0;i<B.hang;i++)     
135             {
136                 for(int j=0;j<B.lie;j++)     
137                  {
138                      cin>>B.b[i][j];
139                  }
140 
141 
142             }
143             
144             C.b=new int*[A.hang];       //分配一个指针数组,将其首地址保存在b中                                                    
145  
146             for(int i=0;i<A.hang;i++)             //为指针数组的每个元素分配一个数组
147                {
148                   C.b[i]=new int[B.lie];
149                }
150 
151         for(int i=0; i<A.hang; i++)
152         {
153         for(int j=0; j<B.lie; j++) 
154         { 
155             C.b[i][j]=0;
156             
157             
158                 C.b[i][j]=A.b[i][j]+B.b[i][j]; 
159             
160           }
161     }
162         cout<<"运算结果是";
163         for(int i=0; i<A.hang; i++)
164         {
165         for(int j=0; j<B.lie; j++) 
166         {
167             cout<<C.b[i][j]<<"  ";
168         }
169         cout<<endl;
170         }
171         
172         }else if(choice==3)
173         {
174             cout<<"请输入矩阵的行数和列数";
175         cin>>A.hang>>A.lie;
176         B.hang=A.hang;
177         B.lie=A.lie;
178         C.hang=A.hang;
179         C.lie=A.lie;
180     
181     
182             cout<<"请输入一个"<<A.hang<<"*"<<A.lie<<"的矩阵";
183             A.b=new int*[A.hang];       //分配一个指针数组,将其首地址保存在b中                                                    
184  
185             for(int i=0;i<A.hang;i++)             //为指针数组的每个元素分配一个数组
186                {
187                   A.b[i]=new int[A.lie];
188                }
189 
190             for(int i=0;i<A.hang;i++)     
191             {
192                 for(int j=0;j<A.lie;j++)     
193                  {
194                      cin>>A.b[i][j];
195                  }
196 
197 
198             }
199             cout<<"请输入一个"<<B.hang<<"*"<<B.lie<<"的矩阵";
200             B.b=new int*[B.hang];       //分配一个指针数组,将其首地址保存在b中                                                    
201  
202             for(int i=0;i<B.hang;i++)             //为指针数组的每个元素分配一个数组
203                {
204                   B.b[i]=new int[B.lie];
205                }
206 
207             for(int i=0;i<B.hang;i++)     
208             {
209                 for(int j=0;j<B.lie;j++)     
210                  {
211                      cin>>B.b[i][j];
212                  }
213 
214 
215             }
216             
217             C.b=new int*[A.hang];       //分配一个指针数组,将其首地址保存在b中                                                    
218  
219             for(int i=0;i<A.hang;i++)             //为指针数组的每个元素分配一个数组
220                {
221                   C.b[i]=new int[B.lie];
222                }
223 
224         for(int i=0; i<A.hang; i++)
225         {
226         for(int j=0; j<B.lie; j++) 
227         { 
228             C.b[i][j]=0;
229             
230             
231                 C.b[i][j]=A.b[i][j]-B.b[i][j]; 
232             
233           }
234     }
235         cout<<"运算结果是";
236         for(int i=0; i<A.hang; i++)
237         {
238         for(int j=0; j<B.lie; j++) 
239         {
240             cout<<C.b[i][j]<<"  ";
241         }
242         cout<<endl;
243         }
244         }else if(choice==4)
245         {
246             break;
247         }
248 
249 
250         
251         
252     }
253     
254 }
255 }

 

posted @ 2016-07-05 18:07  三藏大湿  阅读(239)  评论(0编辑  收藏  举报