C++編程練習:6-矩陣相乘

背景

矩陣相乘最重要的方法是一般矩陣乘積。它只有在第一個矩陣的列數和第二個矩陣的行數相同時纔有意義。一般單指矩陣乘積時,指的便是一般矩陣乘積。一個m×n的矩陣就是m×n個數排成m行n列的一個數陣。由於它把許多數據緊湊的集中到了一起,所以有時候可以簡便地表示一些複雜的模型。

描述

輸入兩個矩陣,輸出它們的乘積。無意義時輸出error。

輸入格式

每個矩陣:
一行,兩個數,表示矩陣的行數、列數。
後面若干行,這個矩陣每一項的值。
方式:通過鍵盤輸入

輸出格式

輸出相乘的結果。
方式:通過屏幕輸出

測試樣例

輸入

2 3
1 2 3
4 5 6
3 2
1 4
2 5
3 6

輸出

14 32
32 77

參考程序:

#include<iostream>
using namespace std;
int main()
{
    int *A,*B,*C;
    int a1,a2,b1,b2,c1,c2;
    int i,j,k;
    cin>>a1>>a2;
    A=new int[a1*a2];
    for(i=0;i<a1;i++)
    {
        for(j=0;j<a2;j++)
            cin>>A[i*a2+j];
    }
    cin>>b1>>b2;
    B=new int[b1*b2];
    for(i=0;i<b1;i++)
    {
        for(j=0;j<b2;j++)
            cin>>B[i*b2+j];
    }
    if(a2!=b1)
    {
        cout<<"error"<<endl;
    }
    else
    {
        c1=a1;
        c2=b2;
        C=new int[c1*c2];
        for(i=0;i<c1;i++)
            for(j=0;j<c2;j++)
            {
                C[i*c2+j]=0;
                for(k=0;k<a2;k++)
                C[i*c2+j]=C[i*c2+j]+A[i*a2+k]*B[k*b2+j];
            }
        for(i=0;i<c1;i++)
        {
            for(j=0;j<c2;j++)
            {cout<<C[i*c2+j]<<" ";}
            cout<<endl;
        }
            
    }
    return 0;
}


如程序有錯誤或者你有什麼建議,歡迎你的留言!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章