zoukankan      html  css  js  c++  java
  • 矩阵运算

      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 }
  • 相关阅读:
    rsync 服务器配置过程
    百度基础技术总结
    利用cobbler无人值守批量安装centos
    安装批量装机工具cobbler过程
    面试题
    JS作用域
    原型链
    ES6优缺点
    PostCSS理解与运用
    置换元素和非置换元素
  • 原文地址:https://www.cnblogs.com/sanzangtdashi/p/5644610.html
Copyright © 2011-2022 走看看