| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 448 人关注过本帖
标题:[求助]为什么我这个程序只能运行一半?
只看楼主 加入收藏
terry0517
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2007-4-24
收藏
 问题点数:0 回复次数:1 
[求助]为什么我这个程序只能运行一半?

我这个程序是一个矩阵运算:三个3*3矩阵。a,b,c.A是a的逆矩阵,求逆的方法是用伴随矩阵的笨办法。
现在是要算A*b*c
结果只能运行到输入矩阵a。然后就出错,请教高人我要怎么修改程序?
#include <iostream.h>
#include <iomanip.h>

void main()
{
int i,j;
double a[3][3],A[3][3],a1,a2,a3,a4,a5,a6,a7,a8,a9,a0;
cout<<"enter the elements of matrix a:"<<endl;
for (i=1;i<=3;i++)
for (j=1;j<=3;j++)
cin>>a[i][j];
a1=a[0][0];a2=a[0][1];a3=a[0][2];a4=a[1][0];a5=a[1][1];a6=a[1][2];a7=a[2][0];
a8=a[2][1];a9=a[2][2];
a0=a1*a5*a9+a2*a6*a7+a3*a4*a8-a3*a5*a7-a1*a6*a8-a2*a4*a9;
A[0][0]=a1*(a5*a9-a6*a8)/a0;A[0][1]=-a4*(a2*a9-a3*a8)/a0;
A[0][2]=a7*(a2*a6-a3*a5)/a0;A[1][0]=-a2*(a4*a9-a6*a7)/a0;
A[1][1]=a5*(a1*a9-a3*a7)/a0;A[1][2]=-a8*(a1*a6-a3*a4)/a0;
A[2][0]=a3*(a4*a8-a5*a7)/a0;A[2][1]=-a6*(a1*a8-a2*a7)/a0;
A[2][2]=a9*(a1*a5-a2*a4)/a0;
double b[3][3],c[3][3],d[3][3],e[3][3];
int k,l,m;
double n,q;
cout<<"enter the elements of matrix b:"<<endl;
for (k=1;k<=3;k++)
for (l=1;l<=3;l++)
cin>>b[k][l];
cout<<"enter the elements of matrix c:"<<endl;
for (l=1;l<=3;l++)
for (m=1;m<=3;m++)
cin>>c[l][m];
for (k=1;k<=3;k++)
{
for (m=1;m<=3;m++)
{
n=0;
for (l=1;l<=3;l++)
n+=b[k][l]*c[l][m];
d[k][m]=n;
}
}
for (i=1;i<=3;i++)
{
for (m=1;m<=3;m++)
{
q=0;
for (j=1;j<=3;j++)
q+=A[i][j]*d[k][m];
e[i][m]=q;
}
}
for (i=1;i<=3;i++)
{
for (m=1;m<=3;m++)
{
cout<<setw(10)<<q;
}
cout<<endl;
}
}


搜索更多相关主题的帖子: 运行 
2007-04-28 10:03
cz522321
Rank: 1
等 级:禁止访问
威 望:2
帖 子:569
专家分:5
注 册:2006-3-13
收藏
得分:0 

把程序改为:
#include <iostream.h>
#include <iomanip.h>

void main()
{
int i,j;
double a[3][3],A[3][3],a1,a2,a3,a4,a5,a6,a7,a8,a9,a0;
cout<<"enter the elements of matrix a:"<<endl;
for (i=0;i<3;i++)
for (j=0;j<3;j++)
cin>>a[i][j];
a1=a[0][0];a2=a[0][1];a3=a[0][2];a4=a[1][0];a5=a[1][1];a6=a[1][2];a7=a[2][0];
a8=a[2][1];a9=a[2][2];
a0=a1*a5*a9+a2*a6*a7+a3*a4*a8-a3*a5*a7-a1*a6*a8-a2*a4*a9;
A[0][0]=a1*(a5*a9-a6*a8)/a0;A[0][1]=-a4*(a2*a9-a3*a8)/a0;
A[0][2]=a7*(a2*a6-a3*a5)/a0;A[1][0]=-a2*(a4*a9-a6*a7)/a0;
A[1][1]=a5*(a1*a9-a3*a7)/a0;A[1][2]=-a8*(a1*a6-a3*a4)/a0;
A[2][0]=a3*(a4*a8-a5*a7)/a0;A[2][1]=-a6*(a1*a8-a2*a7)/a0;
A[2][2]=a9*(a1*a5-a2*a4)/a0;
double b[3][3],c[3][3],d[3][3],e[3][3];
int k,l,m;
double n,q;
cout<<"enter the elements of matrix b:"<<endl;
for (k=1;k<=3;k++)
for (l=1;l<=3;l++)
cin>>b[k][l];
cout<<"enter the elements of matrix c:"<<endl;
for (l=1;l<=3;l++)
for (m=1;m<=3;m++)
cin>>c[l][m];
for (k=1;k<=3;k++)
{
for (m=1;m<=3;m++)
{
n=0;
for (l=1;l<=3;l++)
n+=b[k][l]*c[l][m];
d[k][m]=n;
}
}
for (i=1;i<=3;i++)
{
for (m=1;m<=3;m++)
{
q=0;
for (j=1;j<=3;j++)
q+=A[i][j]*d[k][m];
e[i][m]=q;
}
}
for (i=1;i<=3;i++)
{
for (m=1;m<=3;m++)
{
cout<<setw(10)<<q;
}
cout<<endl;
}
}

这样就行了.


2007-04-29 22:20
快速回复:[求助]为什么我这个程序只能运行一半?
数据加载中...
 
   



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

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