这个程序的实参和行参我分不清啊,高手帮我分析下,谢谢
#include"iostream.h"#include"iomanip.h"
#define N 100 //定义数组容量
int sanjie(int **c)
{
int b[3][6];
int m=1,n=1,sz=0,sf=0;
int i,j,k;
for(i=0;i<3;i++) //先把数组a分2次复制到数组b中去
for(j=0;j<3;j++)
{
b[i][j]=*(*(c+i)+j);
b[i][j+3]=*(*(c+i)+j);
}
for(j=0;j<3;j++) //分别计算出主对角线和副对角线的值并相减
{
for(k=0;k<3;k++) //先算出每条对角线的乘积
{
m*=b[k][j+k];
n*=b[k][5-j-k];
}
sz+=m; //再把它们加起来,减一下就得到最终的结果了
sf+=n;
m=1;
n=1;
}
return sz-sf; //返回目标
}
void main()
{
int i=0,j=0,k=0,m=1;
int h1=0; //行列式的行与列
int a[N][N];
int **pa=0;
cout<<"本程序只能处理行列都小于100,元素小于100的行列式,请见谅"<<endl;
cout<<endl;
s1: cout<<"请输入行列式的行列数,并按回车结束:"<<endl; //输入行列式的大小
cin>>h1;
if(h1>N && h1<1) //下标越界处理
{
cout<<"下标越界,请重新输入"<<endl;
goto s1;
}
cout<<"请输入行列式的元素,一行一行自上而下地输入,并按回车结束:"<<endl; //输入行列式的元素
while(i<h1*h1)
{
a: cin>>j;
if(j>=100 && j<=-100) //元素的数值不能超过100
{
cout<<"数值越界,请重新输入"<<endl;
goto a;
}
a[i/h1][i%h1]=j;
i++;
}
i=0;
cout<<"输入完毕,计算中……"<<endl;
if(h1==2)cout<<"该行列式最终结果为:"<<a[0][0]*a[1][1]-a[1][0]*a[0][1]<<endl;
else
{
pa=a;
m=sanjie(pa);
cout<<"该行列式最终结果为:"<<m<<endl;
}
下面是错误:
--------------------Configuration: 计算行列式 - Win32 Debug--------------------
Compiling...
计算行列式.cpp
F:\程序\VC++\源程序\计算行列式.cpp(70) : error C2440: '=' : cannot convert from 'int [100][100]' to 'int ** '
Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
F:\程序\VC++\源程序\计算行列式.cpp(75) : fatal error C1004: unexpected end of file found
[ 本帖最后由 新手上路中 于 2010-3-26 23:42 编辑 ]