请路过的C语言大能修改一下,谢谢

[复制链接]
查看11 | 回复1 | 2011-7-7 19:51:34 | 显示全部楼层 |阅读模式
#include
////目的:求N阶方阵的行列式
#include
////方法:全选主元高斯消元法
///环境:vc++6.0
double det(float array[111][111],int n);//函数声明

void main()

{

float a[111][111],i,j,n;

float result;

printf( "输入行列式的阶数(2-100):\n ");

scanf( "%d ",&n);

if(n> 100)

{

printf( "阶数太大 ");
}//输入阶数,判断条件
else

for(i=1;i%f\n ",max);
//确定当y取定一个值时的主元位置,行为row,列为line

if(line==(1+y)&&row==(1+y))

goto loop2;

else if(line==(1+y)||row==(1+y))

{

counter++;



if(row==(1+y))

for(p=1+y;p <n+1;p++)

{z=array[p][line];array[p][line]=array[p][1+y];array[p][1+y]=z;}
//列变换
else

for(q=1+y;q <n+1;q++)//line==(1+y)

{z=array[row][q];array[row][q]=array[1+y][q];array[1+y][q]=z;}
//行变换

}

else

{

for(p=1+y;p <n+1;p++)

{z=array[p][line];array[p][line]=array[p][1+y];array[p][1+y]=z;}
//列变换
for(q=1+y;q <n+1;q++)

{z=array[row][q];array[row][q]=array[1+y][q];array[1+y][q]=z;}
//行变换
}
//所有情况的位置变换完成,为了保证数值运算的稳定性
loop2:

for(c=2+y;c <n+1;c++)

array[1+y][c]=array[1+y][c]/array[1+y][1+y];//除于主元,准备消元
///如果定义数组为int,则这里运算会出问题,所以只好定义为float
///我有一个想法就是强制转换类型,但是还是有问题

for(b=2+y;b <n+1;b++)

for(d=2+y;d <n+1;d++)

array[d]=array[d]-array[1+y][d]*array[1+y];
//消元,为了化
为上三角阵

}

for(i=1;i <n+1;i++)

result*=array;//上三角阵求行列式

if(counter%2==0)

num=1;

else

num=-1;//解决行列变换的符号问题

result=result*num;



return result;//返回值
}
运行错误有:D:\vcwenjian\12.c(31) : error C2108: subscript is not of integral type
D:\vcwenjian\12.c(31) : error C2108: subscript is not of integral type
D:\vcwenjian\12.c(31) : error C2102: '&' requires l-value
D:\vcwenjian\12.c(36) : warning C4244: 'function' : conversion from 'float ' to 'int ', possible loss of data
D:\vcwenjian\12.c(36) : warning C4244: '=' : conversion from 'double ' to 'float ', possible loss of data
D:\vcwenjian\12.c(61) : warning C4244: 'function' : conversion from 'float ' to 'int ', possible loss of data
执行 cl.exe 时出错.

回复

使用道具 举报

千问 | 2011-7-7 19:51:34 | 显示全部楼层
问题在这句float a[111][111],i,j,n; a是float的没问题, 但a的下标,也就是数组的下标要是整形的才行所以a[j] 出错,错误说的类型错误是 i 和 j 的类型错了改成float a[111][111];int i,j,n;...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行