当前位置:首页 > 代码 > 正文

c矩阵相乘源代码(c++矩阵相乘)

admin 发布:2022-12-19 21:17 132


今天给各位分享c矩阵相乘源代码的知识,其中也会对c++矩阵相乘进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

用c语言实现两个矩阵相乘怎么做?

1、程序运行输入数据时,第一行为A矩阵的行列数和B矩阵的行列数,接着分别输入A、B两个矩阵的值。

2、首先,定义6个整型变量,保存A、B矩阵的行和列,以及控制循环的变量,k则用于实现矩阵的乘法。

3、接着,定义三个整型二维数组,保存A、B和C矩阵的各元素。

4、输入三个矩阵的行数和列数,保存在变量a、b、c中。

5、输入矩阵A的各元素,保存在数组X中。

6、输入矩阵B的各元素,保存在数组Y中。

7、将二维数组Z的各元素,初始化为0。

8、用两层for循环,控制矩阵的乘法,并输出乘法所得的结果。

9、计算A矩阵和B矩阵的乘法,结果保存在数组Z中。

10、最后,输出乘法所得的结果,即输出Z数组中的所有元素。

11、运行程序,输入矩阵A和B的行数和列数,以及A矩阵和B矩阵的所有元素,电脑就会计算出乘积C矩阵的所有元素,并输出C矩阵。

求C语言编写矩阵相乘程序

void matrix(int b[][X],int c[][Y])

{

int i,j,k,temp;

for(i=0;iX;i++)

for(j=0;jY;j++){

for(k=0;kY;k++)

a[i][j]+=b[i][k]*c[k][j];

}

}

例如(完整程序):

#include stdio.h

#include stdlib.h

#define X 3

#define Y 3

int a[X][Y];

int b[X][Y];

int c[X][Y];

void matrix(int b[][X],int c[][Y]);

main()

{

int i,j,temp;

printf("Please input int matrix b[%d][%d]\n",X,Y);

for(i=0;iY;i++)

for(j=0;jY;j++){

scanf("%d",temp);

b[i][j]=temp;

}

printf("Please input int matrix c[%d][%d]\n",X,Y);

for(i=0;iX;i++)

for(j=0;jY;j++){

scanf("%d",temp);

c[i][j]=temp;

}

matrix(b,c);

printf("Now print resource matrix b[%d][%d]=",X,Y);

for(i=0;iX;i++){

printf("\n");

for(j=0;jY;j++)

printf("%d ",b[i][j]);

}

printf("\n");

printf("Now print resource matrix c[%d][%d]=",X,Y);

for(i=0;iX;i++){

printf("\n");

for(j=0;jY;j++)

printf("%d ",c[i][j]);

}

printf("\n");

printf("Now printm multiply results matrix a[%d][%d]=B*C:",X,Y);

for(i=0;iX;i++){

printf("\n");

for(j=0;jY;j++)

printf("%d ",a[i][j]);

}

getch();

return 0;

}

void matrix(int b[][X],int c[][Y])

{

int i,j,k,temp;

for(i=0;iX;i++)

for(j=0;jY;j++){

for(k=0;kY;k++)

a[i][j]+=b[i][k]*c[k][j];

}

}

C语言编程求矩阵乘积

#define MAX 50

#define M MAX

#define N MAX

#define T MAX

#define S MAX

int Mult(double a[][N],int m,int n,double b[][T]int s,int t,double c[][T]) {

int i,j,k;

if(n != s) {

printf("两矩阵相乘,左矩阵的列数与右矩阵的行数必须相等。\n");

return 0;

}

int c;

tmp.m_Mat = new double *[tmp.m_Rows];

for(int i = 0;i  tmp.m_Rows;i++) tmp.m_Mat[i] = new double[tmp.m_Cols];

for(i = 0; i  m; ++i) {

for(j = 0; j  n; ++j) {

c[i][j] = 0;

for(k = 0; k  t; ++k)

c[i][j] += c[i][k] * c[k][j];

}

}

return 1;

}

哪位大虾有用C语言实现矩阵相乘的函数源代码

// c[m][l] = a[m][n] * b[n][l]

// a,b,c均为一维数组,a的长度为m*n,b的长度为n*l,c的长度为m*l

void Cheng(float* a, float* b, float* c, int m, int n, int l)

{

for(int i = 0; i m; i++ )

for(int j = 0; j l; j++ )

{

c[i*l+j] = 0.0;

for(int k = 0; k n; k++ )

c[i*l+j] += a[i*n+k]*b[k*l+j];

}

}

望采纳,谢谢

求C语言源代码:从键盘输入两个矩阵,输出这两个矩阵和这两个矩阵相乘的矩阵?

写的有点烦了,不过你看的懂就可以:

#include iostream

#include vector

#include algorithm

#include stdio.h

#include string.h

using namespace std;

typedef vectorvectorint  matrix;

typedef vectorint row;

void GetMatrix(matrix m)

{

    row tmp;

    int n;

    size_t size = 0;

    

    while(cin.peek() != '#')

    {

        cin.unsetf(ios::skipws);

        while(cin  cin.peek() != '\n')

        {

            while(cin.peek() == ' ')

                cin.get();

            

            if(cin.peek() == '#')

                break;

            

            cin  n;

            

            while(cin.peek() == ' ')

                cin.get();

            

            tmp.push_back(n);

        }

        if(cin.peek() != '#')

            cin.get();

        

        if(!cin)

        {

            cerr  "ERROR: Invalid input characters.\n";

            exit(0);

        }

        

        if(size != 0  size != tmp.size())

        {

            cerr  "ERROR: Jagged matrix not allowed.\n";

            exit(0);

        }

        

        size = tmp.size();

        m.push_back(tmp);

        tmp.clear();

    }

    cin.ignore(512, '\n');

    

}

void PrintMatrix(const matrix m)

{

    static char num[32];

    int max = *max_element(m[0].begin(), m[0].end());

    int n;

    

    for(size_t i = 1; i  m.size(); ++i)

            if(max  (n = *max_element(m[i].begin(), m[i].end())))

                max = n;

                

    sprintf(num, "%d", max);

    

    cout.setf(ios::left);

    for(size_t i = 0; i  m.size(); ++i)

    {

        for(size_t j = 0; j  m[i].size(); ++j)

        {

            cout.width(strlen(num));

            cout  m[i][j]  ' ';

        }

        cout  '\n';

    }

}

void MatrixMul(const matrix m1, const matrix m2, matrix product)

{

    if(m1[0].size() != m2.size())

    {

        cerr  "Candidate not allowed.\n";

        cerr  "If m1 is a m * n matrix so m2 must be a n * p matrix.\n";

        exit(0);

    }

    

    for(size_t i = 0; i  m1.size(); ++i)

    {

        product.push_back(row());

        for(size_t j = 0; j  m2[0].size(); ++j)

        {

            product[i].push_back(0);

            for(size_t k = 0; k  m1[0].size(); ++k)

                product[i][j] += m1[i][k] * m2[k][j];

        }

    }

}

int main()

{

    matrix m1, m2, m3;

    

    cout  "Enter matrix1:\n";

    GetMatrix(m1);

    

    cout  "\nEnter matrix2:\n";

    GetMatrix(m2);

    

    MatrixMul(m1, m2, m3);

    

    cout  "\n\nmatrix 1: "  m1.size()  " × " m1[0].size()  '\n';

    PrintMatrix(m1);

    

    cout  "\n\nmatrix 2: "  m2.size()  " × " m2[0].size()  '\n';

    PrintMatrix(m2);

    

    cout  "\n\nm1 * m2: "  m3.size()  " × " m3[0].size()  '\n';

    PrintMatrix(m3);

}

关于c矩阵相乘源代码和c++矩阵相乘的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

版权说明:如非注明,本站文章均为 AH站长 原创,转载请注明出处和附带本文链接;

本文地址:http://ahzz.com.cn/post/24538.html


取消回复欢迎 发表评论:

分享到

温馨提示

下载成功了么?或者链接失效了?

联系我们反馈

立即下载