矩阵相乘

2016-11-26  本文已影响16人  编码的哲哲

include<iostream>

using namespace std;

int main(){

//输入两个矩阵,分别指出是几乘几   
int i , j; //行和列 

cout<<"请输入第一个矩阵的行和列" <<endl;

cin>>i>>j;

cout<<i<<"..."<<j<<endl;

int **number1 = new int*[i];

for(int num1 = 0; num1<i; num1++){
    
    number1[num1] = new int[j];
}

for(int k=0; k<i; k++){
    
    for(int kk=0; kk<j; kk++){

// cin可以连续从键盘读取想要的数据,以空格、tab或换行作为分隔符

        cin>>number1[k][kk];
    }
}

int m , n;

cout<<"请输入第二个矩阵的行和列"<<endl;

cin>>m>>n;

if(j!=m){
    cout<<"第一列不等于第一行,错误"<<endl;
    return -1;
}

int **number2 = new int*[m];

for(int num1 = 0; num1<m; num1++){
    
    number2[num1] = new int[n];
}


for(int k=0; k<m; k++){
    
    for(int kk=0; kk<n; kk++){
        
        cin>>number2[k][kk];
    }
}

//定义一个临时矩阵
int **temp = new int*[i];

for(int num1 = 0; num1<i; num1++){
    
    temp[num1] = new int[n];
}

//将两个矩阵相乘保存到temp数组里面

for(int k=0; k<i; k++)
for(int kk=0; kk<n; kk++){
    
    temp[k][kk] = 0;
    for(int digit=0; digit<j; digit++){
    
        temp[k][kk] += number1[k][digit]*number2[digit][kk];
        
        //cout<<number1[k][digit]<<"-"<<number2[digit][kk];
    } 
    
    cout<<endl;
}


cout<<"计算的结果为:"<<endl;

for(int k=0; k<i; k++){
    
    for(int kk=0; kk<n; kk++){
        
        cout<<temp[k][kk]<<" ";
    }
    
    cout<<endl;
}
return 0;

}

上一篇 下一篇

猜你喜欢

热点阅读