矩阵的转置、加和乘法写入C++

简介: 矩阵的转置、加和乘法写入C++

这是线代里面矩阵的基本运算

转置就是行和列的下标互换:b[i][j]=a[j]][i]

相加矩阵的行列必须相同:c[i][j]=a[i][j]+b[i][j]

相乘矩阵a的m行*n列与矩阵b的n行*k列相乘得一个m行*k列的矩阵
行乘列:c[i][j]=a[i][j]*b[j][i]
(c矩阵是m行k列)

我写了一个c++的小程序,很简单!

#include<iostream>
#define maxsize 100
using namespace std;
void trasmat(int a[][maxsize],int b[][maxsize],int m,int n){
  for(int i=0;i<m;++i){
    for(int j=0;j<n;++j){
      b[j][i]=a[i][j];//转置 
    }
  }
}
void addmat(int a[][maxsize],int b[][maxsize],int c[][maxsize],int m,int n){
  for(int i=0;i<m;++i){
    for(int j=0;j<n;++j){
      c[i][j]=a[i][j]+b[i][j];//相加 
    }
  }
}
void mutmat(int a[][maxsize],int b[][maxsize],int c[][maxsize],int m,int n,int k){
  for(int i=0;i<m;++i){
    for(int j=0;j<k;++j){
      c[i][j]=0;
      for(int l=0;l<n;++l){
        c[i][j]+=a[i][l]*b[l][j];//相乘 
      }
    }
  }
}
void printmat(int c[][maxsize],int m,int n){
  for(int i=0;i<m;++i){
    for(int j=0;j<n;++j){
      cout<<c[i][j]<<" ";
    }
    cout<<"\n";
  }
}
int main(){
  cout<<"矩阵转置相加相乘\n";
  int input,m,n;
  int a[maxsize][maxsize],b[maxsize][maxsize],c[maxsize][maxsize];
  bool flag=1;
  while(flag){
    cout<<"\n矩阵的装置请按1  两个矩阵相加请按2  进行矩阵相乘请按3\n";
    cin>>input;
    switch(input){
      case 1:
        cout<<"输入需要转置矩阵的行数m和列数n:"<<endl;
        cin>>m>>n;
        cout<<"输入数据:\n";
        for(int i=0;i<m;++i){
          for(int j=0;j<n;++j){
            cin>>a[i][j];//输入 
          }
        }
        trasmat(a,b,m,n);
        cout<<"转置结果:\n";
        printmat(b,n,m);
        break;
      case 2:
        cout<<"输入第一个矩阵的行数m和列数n:"<<endl;
        cin>>m>>n;
        cout<<"第一个矩阵数据:\n";
        for(int i=0;i<m;++i){
          for(int j=0;j<n;++j){
            cin>>a[i][j];//输入 
          }
        }
        cout<<"第二个矩阵数据:\n";
        for(int i=0;i<m;++i){
          for(int j=0;j<n;++j){
            cin>>b[i][j];//输入 
          }
        }
        cout<<"相加结果:\n";
        addmat(a,b,c,m,n);
        printmat(c,m,n);
        break;
      case 3:
        cout<<"输入第一个矩阵的行数m和列数n:"<<endl;
        cin>>m>>n;
        cout<<"第一个矩阵数据:\n";
        for(int i=0;i<m;++i){
          for(int j=0;j<n;++j){
            cin>>a[i][j];//输入 
          }
        }
        int k;
        cout<<"输入第二个矩阵的行数n和列数k:"<<endl;
        cin>>n>>k;
        cout<<"第二个矩阵数据:\n";
        for(int i=0;i<n;++i){
          for(int j=0;j<k;++j){
            cin>>b[i][j];//输入 
          }
        }
        cout<<"相乘结果:\n";
        mutmat(a,b,c,m,n,k);
        printmat(c,m,k);
        break;
      default:
        cout<<"输入错误!!!\n";
        break;
    }
    cout<<"退出程序输入end,继续请输入again"<<endl;
    string s;
    cin>>s;
    if(s!="again"&&s!="end"){
      cout<<"指令错误重新输入\n";
      cin>>s;
    }
    if(s=="again"){
      flag=true;
    }
    else if(s=="end"){
      flag=false;
    }
  }
  return 0;
} 

?没问题!运行一下还可以.

有问题欢迎留言。

目录
相关文章
|
7月前
|
算法 测试技术 C++
【动态规划】【矩阵快速幂】【滚动向量】C++算法552. 学生出勤记录 II
【动态规划】【矩阵快速幂】【滚动向量】C++算法552. 学生出勤记录 II
|
4月前
|
C++
C++ PCL 计算多个RT矩阵变换后的变换矩阵
C++ PCL 计算多个RT矩阵变换后的变换矩阵
51 0
|
6月前
|
C++
C++解决线性代数矩阵转置 小实践
【6月更文挑战第3天】C++解决线性代数矩阵转置
77 2
|
7月前
|
算法 测试技术 Serverless
【二分查找】【C++算法】378. 有序矩阵中第 K 小的元素
【二分查找】【C++算法】378. 有序矩阵中第 K 小的元素
|
7月前
|
存储 安全 程序员
C/C++中的整数乘法运算与汇编指令MUL和IMUL
C/C++中的整数乘法运算与汇编指令MUL和IMUL
146 0
|
7月前
|
算法 测试技术 C++
【字符串】【 LCP】【C++算法】2573找出对应 LCP 矩阵的字符串
【字符串】【 LCP】【C++算法】2573找出对应 LCP 矩阵的字符串
|
7月前
|
算法 C++
【动态规划】【矩阵】C++算法329矩阵中的最长递增路径
【动态规划】【矩阵】C++算法329矩阵中的最长递增路径
|
7月前
|
传感器 人工智能 算法
掌握C++中的状态-事件回调矩阵:打造强大的有限状态机
掌握C++中的状态-事件回调矩阵:打造强大的有限状态机
133 0
|
7月前
|
存储 人工智能 算法
【C/C++ 数据结构 】三角矩阵的基本了解
【C/C++ 数据结构 】三角矩阵的基本了解
97 0
|
6天前
|
存储 编译器 C语言
【c++丨STL】string类的使用
本文介绍了C++中`string`类的基本概念及其主要接口。`string`类在C++标准库中扮演着重要角色,它提供了比C语言中字符串处理函数更丰富、安全和便捷的功能。文章详细讲解了`string`类的构造函数、赋值运算符、容量管理接口、元素访问及遍历方法、字符串修改操作、字符串运算接口、常量成员和非成员函数等内容。通过实例演示了如何使用这些接口进行字符串的创建、修改、查找和比较等操作,帮助读者更好地理解和掌握`string`类的应用。
21 2