| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 471 人关注过本帖
标题:程序好吓人死瞌了好久,大神求助运行时显示没错误,但出不了结果帮忙运行一 ...
只看楼主 加入收藏
枫叶依秋
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2014-10-18
结帖率:0
收藏
已结贴  问题点数:20 回复次数:4 
程序好吓人死瞌了好久,大神求助运行时显示没错误,但出不了结果帮忙运行一下
#include<stdio.h>
#include <math.h>

main()
{
double  I,b,w,k[4][4],D,H1,H2,H3;
int i,j,m,n,x,e,f,g,p,q,V,Z;
static double Q[4][4][4],c[4][4][4][4];
double d[4];

I=0;
double GaussPoints2[]={-0.57735026918963,
    0.57735026918963};
double GaussPtCeof2[]={1,
    1};
double GaussPoints3[]={-0.77459666924148,
    0,
    0.77459666924148};
double GaussPtCeof3[]={0.55555555555556,
    0.88888888888889,
    0.55555555555556};
double GaussPoints4[]={-0.86113631159405,
    -0.33998104358486,
    0.33998104358486,
    0.86113631159405};
double GaussPtCeof4[]={0.34785484513745,
    0.65214515486255,
    0.65214515486255,
    0.34785484513745};
double GaussPoints5[]={-0.90617984593866,
    -0.53846931010568,
    0,
    0.53846931010568,
    0.90617984593866};
double GaussPtCeof5[]={0.23692688505619,
    0.47862867049937,
    0.56888888888889,
    0.47862867049937,
    0.23692688505619};;
c[1][1][1][1]=39;
c[2][2][2][2]=39;
c[1][1][2][2]=30;
c[2][2][1][1]=30;
c[3][3][1][1]=27.6;
c[1][1][3][3]=27.6;
c[2][2][3][3]=27.6;
c[3][3][2][2]=27.6;
c[3][3][3][3]=28;
c[2][3][2][3]=51;
c[2][3][3][2]=51;
c[3][2][2][3]=51;
c[3][2][3][2]=51;
c[3][1][3][1]=51;
c[3][1][1][3]=51;
c[1][3][3][1]=51;
c[1][3][1][3]=51;
c[1][2][1][2]=49;
c[1][2][2][1]=49;
c[2][1][2][1]=49;
c[2][1][1][2]=49;
Q[1][2][3]=1;
Q[2][3][1]=1;
Q[3][1][2]=1;
Q[3][2][1]=-1;
Q[2][1][3]=-1;
Q[1][3][2]=-1;
I=0;
printf("input 4 subscript:\n");
scanf("%d%d%d%d",&i,&j,&m,&n);
for(Z=0;Z<1000;Z++)
   {for(V=0;V<1000;V++)
    {

b=GaussPoints4[V];
w=GaussPtCeof4[Z];
d[1]=((sqrt(1-(b*b)))*(cos(3.141593+3.141593*w)))/3;
d[2]=((sqrt(1-(b*b)))*(sin(3.141593+3.141593*w)))/3;
d[3]=b/11;


k[1][1]=((c[1][1][1][1])*d[1]*d[1]+(c[1][1][1][2])*d[1]*d[2]+(c[1][1][1][3])*d[1]*d[3]+(c[1][2][1][1])*d[2]*d[1]+(c[1][2][1][2])*d[2]*d[2]+(c[1][2][1][3])*d[2]*d[3]+(c[1][3][1][1])*d[3]*d[1]+(c[1][3][1][2])*d[3]*d[2]+(c[1][3][1][3])*d[3]*d[3]);

k[1][2]=((c[1][1][2][1])*d[1]*d[1]+(c[1][1][2][2])*d[1]*d[2]+(c[1][1][2][3])*d[1]*d[3]+(c[1][2][2][1])*d[2]*d[1]+(c[1][2][2][2])*d[2]*d[2]+(c[1][2][2][3])*d[2]*d[3]+(c[1][3][2][1])*d[3]*d[1]+(c[1][3][2][2])*d[3]*d[2]+(c[1][3][2][3])*d[3]*d[3]);

k[1][3]=((c[1][1][3][1])*d[1]*d[1]+(c[1][1][3][2])*d[1]*d[2]+(c[1][1][3][3])*d[1]*d[3]+(c[1][2][3][1])*d[2]*d[1]+(c[1][2][3][2])*d[2]*d[2]+(c[1][2][3][3])*d[2]*d[3]+(c[1][3][3][1])*d[3]*d[1]+(c[1][3][3][2])*d[3]*d[2]+(c[1][3][3][3])*d[3]*d[3]);

k[2][1]=((c[2][1][1][1])*d[1]*d[1]+(c[2][1][1][2])*d[1]*d[2]+(c[2][1][1][3])*d[1]*d[3]+(c[2][2][1][1])*d[2]*d[1]+(c[2][2][1][2])*d[2]*d[2]+(c[2][2][1][3])*d[2]*d[3]+(c[2][3][1][1])*d[3]*d[1]+(c[2][3][1][2])*d[3]*d[2]+(c[2][3][1][3])*d[3]*d[3]);

k[2][2]=((c[2][1][2][1])*d[1]*d[1]+(c[2][1][2][2])*d[1]*d[2]+(c[2][1][2][3])*d[1]*d[3]+(c[2][2][2][1])*d[2]*d[1]+(c[2][2][2][2])*d[2]*d[2]+(c[2][2][2][3])*d[2]*d[3]+(c[2][3][2][1])*d[3]*d[1]+(c[2][3][2][2])*d[3]*d[2]+(c[2][3][2][3])*d[3]*d[3]);

k[2][3]=((c[2][1][3][1])*d[1]*d[1]+(c[2][1][3][2])*d[1]*d[2]+(c[2][1][3][3])*d[1]*d[3]+(c[2][2][3][1])*d[2]*d[1]+(c[2][2][3][2])*d[2]*d[2]+(c[2][2][3][3])*d[2]*d[3]+(c[2][3][3][1])*d[3]*d[1]+(c[2][3][3][2])*d[3]*d[2]+(c[2][3][3][3])*d[3]*d[3]);

k[3][1]=((c[3][1][1][1])*d[1]*d[1]+(c[3][1][1][2])*d[1]*d[2]+(c[3][1][1][3])*d[1]*d[3]+(c[3][2][1][1])*d[2]*d[1]+(c[3][2][1][2])*d[2]*d[2]+(c[3][2][1][3])*d[2]*d[3]+(c[3][3][1][1])*d[3]*d[1]+(c[3][3][1][2])*d[3]*d[2]+(c[3][3][1][3])*d[3]*d[3]);

k[3][2]=((c[3][1][2][1])*d[1]*d[1]+(c[3][1][2][2])*d[1]*d[2]+(c[3][1][2][3])*d[1]*d[3]+(c[3][2][2][1])*d[2]*d[1]+(c[3][2][2][2])*d[2]*d[2]+(c[3][2][2][3])*d[2]*d[3]+(c[3][3][2][1])*d[3]*d[1]+(c[3][3][2][2])*d[3]*d[2]+(c[3][3][2][3])*d[3]*d[3]);

k[3][3]=((c[3][1][3][1])*d[1]*d[1]+(c[3][1][3][2])*d[1]*d[2]+(c[3][1][3][3])*d[1]*d[3]+(c[3][2][3][1])*d[2]*d[1]+(c[3][2][3][2])*d[2]*d[2]+(c[3][2][3][3])*d[2]*d[3]+(c[3][3][3][1])*d[3]*d[1]+(c[3][3][3][2])*d[3]*d[2]+(c[3][3][3][3])*d[3]*d[3]);


D=k[1][1]*k[2][2]*k[3][3]+k[1][2]*k[2][3]*k[3][1]+k[1][3]*k[2][1]*k[3][2]-k[1][1]*k[2][3]*k[3][2]-k[1][2]*k[2][1]*k[3][3]-k[1][3]*k[2][2]*k[3][1];
H1=0;
H2=0;
for(p=1;p<4;p++)
{   for(q=1;q<4;q++)
    {   for(x=1;x<4;x++)
          {   for(e=1;e<4;e++)
               {   for(f=1;f<4;f++)
                      { for(g=1;g<4;g++)
                           {H1+=((0.5*c[p][q][m][n]*d[j]*d[q]*Q[i][x][e]*Q[p][f][g]*k[x][f]*k[e][g])/(8*D));
                            H2+=((0.5*c[p][q][m][n]*d[i]*d[q]*Q[j][x][e]*Q[p][f][g]*k[x][f]*k[e][g])/(8*D));}

}}}}}

H3=(H1+H2);

I+=GaussPtCeof4[V]*GaussPtCeof4[Z]*(H3);}
}

printf("I=%f",I);
return 0;
}
搜索更多相关主题的帖子: include double 
2014-10-18 17:15
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:20 
抄来的代码吧,Z、V循环的上限是不是被你改过?

首先,数组没有初始化,那些你没有赋值的元素不一定是零。

第二,Z、V操作越界,4点高斯积分那个数组只有4个元素,你已经超出两条街了。

其它方面不说了,你应该没怎么写过代码。

重剑无锋,大巧不工
2014-10-18 18:32
枫叶依秋
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2014-10-18
收藏
得分:0 
回复 2 楼 beyondyf
你说的很对我没写过代码,复制过来拿来用的。以下是最原始的复制过来的程序,麻烦帮忙看看能不能运行出来,谢谢了
#include<stdio.h>
#include <math.h>

main()
{
double  I,b,w,k[4][4],D,H1,H2,H3;
int i,j,m,n,x,e,f,g,p,q,V,Z;
static double Q[4][4][4],c[4][4][4][4];
double d[4];

I=0;
double GaussPoints2[]={-0.57735026918963,
    0.57735026918963};
double GaussPtCeof2[]={1,
    1};
double GaussPoints3[]={-0.77459666924148,
    0,
    0.77459666924148};
double GaussPtCeof3[]={0.55555555555556,
    0.88888888888889,
    0.55555555555556};
double GaussPoints4[]={-0.86113631159405,
    -0.33998104358486,
    0.33998104358486,
    0.86113631159405};
double GaussPtCeof4[]={0.34785484513745,
    0.65214515486255,
    0.65214515486255,
    0.34785484513745};
double GaussPoints5[]={-0.90617984593866,
    -0.53846931010568,
    0,
    0.53846931010568,
    0.90617984593866};
double GaussPtCeof5[]={0.23692688505619,
    0.47862867049937,
    0.56888888888889,
    0.47862867049937,
    0.23692688505619};;
c[1][1][1][1]=39;
c[2][2][2][2]=39;
c[1][1][2][2]=30;
c[2][2][1][1]=30;
c[3][3][1][1]=27.6;
c[1][1][3][3]=27.6;
c[2][2][3][3]=27.6;
c[3][3][2][2]=27.6;
c[3][3][3][3]=28;
c[2][3][2][3]=51;
c[2][3][3][2]=51;
c[3][2][2][3]=51;
c[3][2][3][2]=51;
c[3][1][3][1]=51;
c[3][1][1][3]=51;
c[1][3][3][1]=51;
c[1][3][1][3]=51;
c[1][2][1][2]=49;
c[1][2][2][1]=49;
c[2][1][2][1]=49;
c[2][1][1][2]=49;
Q[1][2][3]=1;
Q[2][3][1]=1;
Q[3][1][2]=1;
Q[3][2][1]=-1;
Q[2][1][3]=-1;
Q[1][3][2]=-1;
I=0;
printf("input 4 subscript:\n");
scanf("%d%d%d%d",&i,&j,&m,&n);
for(Z=0;Z<1000;Z++)
   {for(V=0;V<1000;V++)
    {

b=GaussPoints1000[V];
w=GaussPtCeof1000[Z];
d[1]=((sqrt(1-(b*b)))*(cos(3.141593+3.141593*w)))/3;
d[2]=((sqrt(1-(b*b)))*(sin(3.141593+3.141593*w)))/3;
d[3]=b/11;


k[1][1]=((c[1][1][1][1])*d[1]*d[1]+(c[1][1][1][2])*d[1]*d[2]+(c[1][1][1][3])*d[1]*d[3]+(c[1][2][1][1])*d[2]*d[1]+(c[1][2][1][2])*d[2]*d[2]+(c[1][2]

[1][3])*d[2]*d[3]+(c[1][3][1][1])*d[3]*d[1]+(c[1][3][1][2])*d[3]*d[2]+(c[1][3][1][3])*d[3]*d[3]);

k[1][2]=((c[1][1][2][1])*d[1]*d[1]+(c[1][1][2][2])*d[1]*d[2]+(c[1][1][2][3])*d[1]*d[3]+(c[1][2][2][1])*d[2]*d[1]+(c[1][2][2][2])*d[2]*d[2]+(c[1][2]

[2][3])*d[2]*d[3]+(c[1][3][2][1])*d[3]*d[1]+(c[1][3][2][2])*d[3]*d[2]+(c[1][3][2][3])*d[3]*d[3]);

k[1][3]=((c[1][1][3][1])*d[1]*d[1]+(c[1][1][3][2])*d[1]*d[2]+(c[1][1][3][3])*d[1]*d[3]+(c[1][2][3][1])*d[2]*d[1]+(c[1][2][3][2])*d[2]*d[2]+(c[1][2]

[3][3])*d[2]*d[3]+(c[1][3][3][1])*d[3]*d[1]+(c[1][3][3][2])*d[3]*d[2]+(c[1][3][3][3])*d[3]*d[3]);

k[2][1]=((c[2][1][1][1])*d[1]*d[1]+(c[2][1][1][2])*d[1]*d[2]+(c[2][1][1][3])*d[1]*d[3]+(c[2][2][1][1])*d[2]*d[1]+(c[2][2][1][2])*d[2]*d[2]+(c[2][2]

[1][3])*d[2]*d[3]+(c[2][3][1][1])*d[3]*d[1]+(c[2][3][1][2])*d[3]*d[2]+(c[2][3][1][3])*d[3]*d[3]);

k[2][2]=((c[2][1][2][1])*d[1]*d[1]+(c[2][1][2][2])*d[1]*d[2]+(c[2][1][2][3])*d[1]*d[3]+(c[2][2][2][1])*d[2]*d[1]+(c[2][2][2][2])*d[2]*d[2]+(c[2][2]

[2][3])*d[2]*d[3]+(c[2][3][2][1])*d[3]*d[1]+(c[2][3][2][2])*d[3]*d[2]+(c[2][3][2][3])*d[3]*d[3]);

k[2][3]=((c[2][1][3][1])*d[1]*d[1]+(c[2][1][3][2])*d[1]*d[2]+(c[2][1][3][3])*d[1]*d[3]+(c[2][2][3][1])*d[2]*d[1]+(c[2][2][3][2])*d[2]*d[2]+(c[2][2]

[3][3])*d[2]*d[3]+(c[2][3][3][1])*d[3]*d[1]+(c[2][3][3][2])*d[3]*d[2]+(c[2][3][3][3])*d[3]*d[3]);

k[3][1]=((c[3][1][1][1])*d[1]*d[1]+(c[3][1][1][2])*d[1]*d[2]+(c[3][1][1][3])*d[1]*d[3]+(c[3][2][1][1])*d[2]*d[1]+(c[3][2][1][2])*d[2]*d[2]+(c[3][2]

[1][3])*d[2]*d[3]+(c[3][3][1][1])*d[3]*d[1]+(c[3][3][1][2])*d[3]*d[2]+(c[3][3][1][3])*d[3]*d[3]);

k[3][2]=((c[3][1][2][1])*d[1]*d[1]+(c[3][1][2][2])*d[1]*d[2]+(c[3][1][2][3])*d[1]*d[3]+(c[3][2][2][1])*d[2]*d[1]+(c[3][2][2][2])*d[2]*d[2]+(c[3][2]

[2][3])*d[2]*d[3]+(c[3][3][2][1])*d[3]*d[1]+(c[3][3][2][2])*d[3]*d[2]+(c[3][3][2][3])*d[3]*d[3]);

k[3][3]=((c[3][1][3][1])*d[1]*d[1]+(c[3][1][3][2])*d[1]*d[2]+(c[3][1][3][3])*d[1]*d[3]+(c[3][2][3][1])*d[2]*d[1]+(c[3][2][3][2])*d[2]*d[2]+(c[3][2]

[3][3])*d[2]*d[3]+(c[3][3][3][1])*d[3]*d[1]+(c[3][3][3][2])*d[3]*d[2]+(c[3][3][3][3])*d[3]*d[3]);


D=k[1][1]*k[2][2]*k[3][3]+k[1][2]*k[2][3]*k[3][1]+k[1][3]*k[2][1]*k[3][2]-k[1][1]*k[2][3]*k[3][2]-k[1][2]*k[2][1]*k[3][3]-k[1][3]*k[2][2]*k[3][1];
H1=0;
H2=0;
for(p=1;p<4;p++)
{   for(q=1;q<4;q++)
    {   for(x=1;x<4;x++)
          {   for(e=1;e<4;e++)
               {   for(f=1;f<4;f++)
                      { for(g=1;g<4;g++)
                           {H1+=((0.5*c[p][q][m][n]*d[j]*d[q]*Q[i][x][e]*Q[p][f][g]*k[x][f]*k[e][g])/(8*D));
                            H2+=((0.5*c[p][q][m][n]*d[i]*d[q]*Q[j][x][e]*Q[p][f][g]*k[x][f]*k[e][g])/(8*D));}

}}}}}

H3=(H1+H2);

I+=GaussPtCeof1000[V]*GaussPtCeof1000[Z]*(H3);}
}

printf("I=%f",I);
return 0;
}
2014-10-18 19:04
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:0 
肯定还是不行,1000点高斯这个数组没定义。好庞大的集,这个数据我估计是由外部读入的。

另外上面我说错了一点,数组c定义的是静态数据,那默认是初始化为零的,不需要显示初始化。

虽然知道你在做高斯积分,但不清楚你这具体是什么,所以中间公式应用的对不对我判断不了,什么样的输入数据有意义。

如果只想让程序运行起来得出个结论,可以仍使用4点高斯点,将Z、V循环上限改成4。

或者告诉我你用的公式,我可以帮你再写一个。上面的代码实在不忍直视。

重剑无锋,大巧不工
2014-10-18 19:29
枫叶依秋
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2014-10-18
收藏
得分:0 
回复 3 楼 枫叶依秋
b=GaussPoints1000[V];
w=GaussPtCeof1000[Z];还有一些外部数据没读入,我把上限改成4试试,你们真是有心了
2014-10-18 19:45
快速回复:程序好吓人死瞌了好久,大神求助运行时显示没错误,但出不了结果帮忙运 ...
数据加载中...
 
   



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

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