zoukankan      html  css  js  c++  java
  • C++两个矩阵相乘

    /*
    编程求两个矩阵相乘的结果。输入第一行是整数m,n,表示第一个矩阵式m行n列的;然后是一个m * n的矩阵。
    再下一行的输入时整数p,q,表示下一个矩阵p行,q列的(n=p);然后就是一个p行q列的矩阵。
    要求输出两个矩阵相乘的结果矩阵(1<m、n、p、q<=8).
    P82页
    2014年10月3日21:32:23
    */
    #include <iostream>
    using namespace std;
    const int size = 10;
    void init(int *, int *, int a[][size]);//初始化数组
    void multi(int, int, int, int, int a[][size], int b[][size], int result[][size]);
    void print(int, int, int result[][size]);
    int main()
    {
        int m, n, p, q;
        int a[size][size];
        int b[size][size];
        int result[size][size] = { 0 }; //将保存结果的数组初始化为0;
        /*
        int a[size][size] = { { 2, 4, 5 }, { 2, 1, 3 } };  //初始化数组
        int b[size][size] = { { 1, 1, 1 }, { 2, 3, 2 }, { 0, 1, 4 } };  //初始化数组
        m = 2;
        n = 3;
        p = q = 3;
        */
        init(&m, &n, a);
        init(&p, &q, b);
        multi(m, n, p, q, a, b, result);
        //print(m, n, a);   检查输入矩阵
        //print(p, q, b);
        print(m, q, result);
        system("pause");
        return 0;
    }
    void multi(int m, int n, int p, int q, int a[][size], int b[][size], int result[][size])
    {
        if (n == p) //第一个矩阵的列数与第二个矩阵的行数相等时,两个矩阵才能相乘;
            for (int i = 0; i < m; i++)  //a的行数
            {
                for (int j = 0; j < q; j++)      //b的列数
                {
                    for (int k = 0; k < n; k++)  //a的列数
                    {
                        result[i][j] += a[i][k] * b[k][j];
                    }
                }
            }
        else
            printf("行数不匹配 ");
    }
    void print(int m, int q, int result[][size])
    {
        for (int i = 0; i < m; i++)
        {
            for (int j = 0; j < q; j++)
            {
                printf("%d ", result[i][j]);
            }
            printf(" ");
        }
    }
    void init(int *pm, int *pn, int a[][size])
    {
        cin >> *pm >> *pn;
        for (int i = 0; i < *pm; i++)
        {
            for (int j = 0; j < *pn; j++)
            {
                cin >> a[i][j];
            }
        }
    }

  • 相关阅读:
    intelliJ IDEA 全屏键盘手
    NoNodeAvailableException异常的解决
    Java HotSpot(TM) Client VM 与 server VM 的配置
    乐优商城问题1:新增品牌失败
    Linux安装nginx的环境要求
    NeoVIM安装使用
    ubuntu18.04 开机定时启动任务
    【Eclipse+PyDev】使用Python的IDE安装及配置详解
    ARM开发板挂载Ubuntu18.04主机的NFS共享文件夹
    Ubuntu18.04 解决umount: /mnt: device is busy
  • 原文地址:https://www.cnblogs.com/zhoug2020/p/7769148.html
Copyright © 2011-2022 走看看