求助数组问题

lbfb 2003-09-11 05:58:33
将下列C程序移植到VC++中,并且在对话框中显示结果。
我在做的过程中,在调用函数语句总出现错误:c2664(不能转换两维数组问题)。
请大虾帮忙解决。谢了先!

主函数程序为:
#include“stdio.h”
#include“cagaus.c”
main()
{ int i;
static doublea[4][4]={ {0.2368,0.2471,0.2568,1.2671},
{0.1968,0.2071,102168,0.2271},
{0.1581,101675,0.1768,0.2271},
{1.0061,0.1254,0.1397,0.1490} };
static doublex[4],b[4]= {1.8471,1.7471,1.6471,1.5471};
i=cagaus(a,b,4,x);
if(i!=0)
for(i=0;i<=3;i++)
printf(“x(%d)=%e\n”,i,x[i]);
}

被调高斯函数程序为:
#include“stdlib.h”
#include“math.h”
#include“stdio.h”
int cagaus(a,b,n,x)
int n;
double a[],b[],x[];
{ int *js,l,k,i,j,is,p,q;
double d,t;
js=malloc(n*sizeof(int));
l=1;
for(k=0;k<=n-2;k++)
{d=0.0;
for(i=k;i<=n-1;i++)
for(j=k;j<=n-1;j++)
{ t=fabs(a[i*n+j];
if (t>d){d=t;js[k]=j;is=i;}
}
if(d+1.0==1.0) l=0;
else
{if(js[k]!=k)
for(i=0;i<=n-1;i++)
{p=i*n+k;q=i*n+js[k];t=a[p];a[p]=a[q];a[q]=t;}
if(is!=k)
{
for(j=k;j<=n-1;j++){p=k*n+j;q=is*n+j;t=a[p];a[p]=a[q];a[q]=t;}
t=b[k];b[k]=b[is];b[is]=t;
}
}
if(l==0)
{ free(js);printf(“fail\n”);return(0);}
d=a[k*n+k];
for(j=k+1;j<=n-1;j++){p=k*n+j;a[p]=a[p]/d;}
b[k]=b[k]/d;
for(i=k+1;i<=n-1;j++)
{for(j=k+1;j<=n-1;j++){p=i*n+j;a[p]=a[p]-a[i*n+k]*a[k*n+j];}
b[i]=b[i]-a[i*n+k]*b[k];
}
}
d=a[(n-1)*n+n-1];
if(fabs(d)+1.0==1.0)
{free(js);printf(“fail\n”);return(0);}
x[n-1]=b[n-1]/d;
for(i=n-2;i>=0;i--)
{t=0.0;for(j=i+1;j<=n-1;j++)t=t+a[i*n+j]*x[j];x[i]=b[i]-t;}
js[n-1]=n-1;
for(k=n-1;k>=0;k--)
if(js[k]!=k){t=x[k];x[k]=x[js[k]];x[js[k]]=t;}
free(js);return(1);
}

(完)
...全文
71 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧