标题:[原创]我写的一些程序,矩阵相乘,希望对大家有用
只看楼主
hlstone
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2005-12-13
 问题点数:0 回复次数:1 
[原创]我写的一些程序,矩阵相乘,希望对大家有用

#include<iostream.h>
#include<malloc.h>
#include<iomanip.h>
struct MultiMatrix{
int * p;
int N;
};
void input(MultiMatrix & T1,MultiMatrix & T2)
{
int k=T1.N*(T1.N+1)/2;
cout<<"输入两个对称矩阵的阶数:"<<endl;
cin>>T1.N;
T2.N=T1.N;
T1.p=(int *)malloc(k*sizeof(int));
T2.p=(int *)malloc(k*sizeof(int));
cout<<"分别输入两个矩阵的下三角形元素,共连续输入"<<k<<"个元素,每两个元素之间用空格分开。"<<endl;
cout<<" 对称矩阵1下三角元素:"<<endl;
for(int i=0;i<k;i++)
cin>>T1.p[i];
cout<<" 对称矩阵2下三角元素:"<<endl;
for(int j=0;j<k;j++)
cin>>T2.p[j];
cout<<endl;
}
int Elem(MultiMatrix T,int i,int j){
int k;
if(i>=j)
k=i*(i+1)/2+j;
else
k=j*(j+1)/2+i;
return T.p[k];
}
void printT(MultiMatrix T){
for(int i=0;i<T.N;i++){
for(int j=0;j<T.N;j++)
cout<<setw(6)<<setiosflags(ios::left)<<Elem(T,i,j)<<" ";
cout<<endl;
}
}

void main(){
MultiMatrix T1,T2;
cout<<" 对称矩阵相乘"<<endl;
cout<<"先输入两个N阶矩阵的阶数N并回车,然后输入矩阵一的下三角元素并回车,\n"
<<"然后输入矩阵二的下三角元素并回车。此时,屏幕上便显示结果。\n";
int x=0;
input(T1,T2);
cout<<"结果:"<<endl;
printT(T1);
cout<<"×\n";
printT(T2);
cout<<"=\n";
MultiMatrix W;
W.N=T1.N;
W.p=(int *)malloc(T1.N*T1.N*sizeof(int));
for(int i=0;i<T1.N;i++)
for(int j=0;j<T1.N;j++){
W.p[x]=0;
for(int n=0;n<T1.N;n++)
W.p[x]+=(Elem(T1,i,n)*Elem(T2,n,j));
x++;
}
for(int mc=0;mc<W.N*W.N;mc++){
if(mc!=0&&mc%W.N==0)
cout<<endl;
cout<<setw(6)<<setiosflags(ios::left)<<W.p[mc]<<" ";
}
cout<<"\nk,";
}

搜索更多相关主题的帖子: int 矩阵 相乘 
2005-12-13 23:48
德隆0812
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2007-6-19
得分:0 
不错不错!!!!
2007-06-21 15:04



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-38040-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.945831 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved