| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2111 人关注过本帖
标题:矩阵的乘法~
只看楼主 加入收藏
六道
Rank: 1
等 级:新手上路
帖 子:120
专家分:0
注 册:2007-9-28
收藏
 问题点数:0 回复次数:10 
矩阵的乘法~

#include<iostream.h>
#include<iomanip.h>

int a[3][4]={{5,7,8,2},{-2,4,1,1},{1,2,3,4}};
int b[4][5]={{4,-2,3,3,9},{4,3,8,-1,2},{2,3,5,2,7},{1,0,6,3,4}};
int c[3][5];

int multimatrix(int a[][4],int arow,int acol,int b[][5],int brow,int bcol,int c[][5],int crow,int ccol);

void main()
{
if(multimatrix(a,3,4,b,4,5,c,3,5))
{
cout<<"illegal matrix multiply.\n";
return;
}

for(int i=0;i<3;i++)
{
for(int j=0;i<5;j++)
cout<<setw(5)<<c[i][j];
cout<<endl;
}
}

int multimatrix(int a[][4],int arow,int acol,int b[][5],int brow,int bcol,int c[][5],int crow,int ccol)
{
if(acol!=brow)return 1; //正确性检查
if(arow!=crow)return 1;
if(bcol!=ccol)return 1;

for(int i=0;i<crow;i++)
for(int j=0;i<ccol;j++)
for(int n=0;n<acol;n++)
c[i][j]+=a[i][n]*b[n][j];
return 0;
}

没错误,运行不出结果~帮忙看看~

另外问下:红色部分return;是跳出函数的意思吗?~

还有就是蓝色部分:
if(acol!=brow)return 1;
if(arow!=crow)return 1;
if(bcol!=ccol)return 1;
我觉得只要检查矩阵a和b就可以了,因为c此时还没出现,所以后2句不需要吧~

搜索更多相关主题的帖子: 乘法 矩阵 
2007-10-14 18:16
永夜的极光
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:2721
专家分:1
注 册:2007-10-9
收藏
得分:0 
就是结束的意思

c是传进来的参数,在程序开头已经定义了,所以必须要判断一下的

从BFS(Breadth First Study)到DFS(Depth First Study)
2007-10-15 08:19
六道
Rank: 1
等 级:新手上路
帖 子:120
专家分:0
注 册:2007-9-28
收藏
得分:0 

哦 ,谢谢LS的~

程序运行还是没有结果~LX的有时间帮忙看看~


★孤独的人是可耻的★
2007-10-15 11:47
aipb2007
Rank: 8Rank: 8
来 自:CQU
等 级:贵宾
威 望:40
帖 子:2879
专家分:7
注 册:2007-3-18
收藏
得分:0 
mian函数里的return可以表示返回。

兰色部分检查也是必要的。

你的错误很幼稚并且是可以调试出来的。
for(int i=0;i<3;i++)
{
for(int j=0;i<5;j++)


for(int i=0;i<crow;i++)
for(int j=0;i<ccol;j++)


就是这两个地方,好好看看你的循环变量。

Fight  to win  or  die...
2007-10-15 13:21
远去的列车
Rank: 1
等 级:新手上路
威 望:2
帖 子:205
专家分:0
注 册:2007-8-7
收藏
得分:0 
都是笔误

[此贴子已经被作者于2007-10-15 13:33:50编辑过]



C++学习
2007-10-15 13:32
六道
Rank: 1
等 级:新手上路
帖 子:120
专家分:0
注 册:2007-9-28
收藏
得分:0 
以下是引用aipb2007在2007-10-15 13:21:21的发言:
mian函数里的return可以表示返回。

兰色部分检查也是必要的。

你的错误很幼稚并且是可以调试出来的。
for(int i=0;i<3;i++)
{
for(int j=0;i<5;j++)


for(int i=0;i<crow;i++)
for(int j=0;i<ccol;j++)


就是这两个地方,好好看看你的循环变量。

不好意思,自己也检查了很久,以后会仔细的


★孤独的人是可耻的★
2007-10-15 13:33
aipb2007
Rank: 8Rank: 8
来 自:CQU
等 级:贵宾
威 望:40
帖 子:2879
专家分:7
注 册:2007-3-18
收藏
得分:0 
以下是引用远去的列车在2007-10-15 13:32:00的发言:
补充楼上的
c[i][j]+=a[i][n]*b[n][j];
其中c没初始化就用了,里面的值未知

c定义在main函数外,全局内置对象采用值初始化,也就是0,所以是可以的。


Fight  to win  or  die...
2007-10-15 13:34
远去的列车
Rank: 1
等 级:新手上路
威 望:2
帖 子:205
专家分:0
注 册:2007-8-7
收藏
得分:0 
呵呵,我测试时没把它设成全局变量了。。

C++学习
2007-10-15 13:36
hhei
Rank: 2
等 级:论坛游民
帖 子:36
专家分:27
注 册:2007-10-14
收藏
得分:0 

强汗!!!!!!你的
for(int i=0;i<crow;i++)
for(int j=0;i<ccol;j++)
for(int n=0;n<acol;n++)
c[i][j]+=a[i][n]*b[n][j];
红色部分是个j吧,这样导致数组越界,当然出错了啊


2007-10-15 14:22
china25qd
Rank: 1
等 级:新手上路
帖 子:161
专家分:0
注 册:2007-9-6
收藏
得分:0 
return一个什么东西?

抱膝怀天下 闲坐观四海
2007-10-15 20:53
快速回复:矩阵的乘法~
数据加载中...
 
   



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

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