24小时热门版块排行榜    

CyRhmU.jpeg
查看: 345  |  回复: 9
当前主题已经存档。

lansesanji

银虫 (小有名气)

[交流] c语言求助

各位精通C语言的大虾,我有个问题,我的程序定义了将近10个数组,但是数组的维数如果定义大了就不能正常运行,维数如果小的话就没有问题,到底是怎么回事啊?帮帮忙啊,不胜感激啊……
蓝色三井
已阅   关注TA 给TA发消息 送TA红花 TA的回帖

shenao_07

木虫 (著名写手)


这个你仔细检查下你定义的组数对不,还有语言编写有错误不,应该还是定义的时候出问题了
2楼2009-12-23 17:54:05
已阅   关注TA 给TA发消息 送TA红花 TA的回帖

sun_sun_sun

金虫 (小有名气)

建议LZ把程序贴上来,大家才能帮你分析,有时问题可能出在别的语句上。
3楼2009-12-23 18:23:53
已阅   关注TA 给TA发消息 送TA红花 TA的回帖

lansesanji

银虫 (小有名气)

现在贴上源程序,大家帮帮忙了!

/* Note:Your choice is C IDE */
#include
#include
#define k 6
#define numb 67
void main()
{
  double T[numb][numb],detar,detax,aw,ae,an,as,ap,xw,xe,rn,rs,e1=0,e2=0,b[numb][numb],a[numb][numb]={0};
  double r[numb],x[numb],t[numb][numb];
  double T0[7][numb][numb]={0},a0[7][numb][numb]={0};
  int i,j,m,n,Nk;   
  Nk=pow(2,k)+1;      
  for(i=0;i=100;
  for(j=0;j   for(i=1;i<=Nk;i++) T[Nk]=300;
  for(j=1;j<=Nk;j++) T[j][0]=400;
  for(i=1;i      {for(j=1;j               T[j]=200;
     }
   for(i=0;i<=Nk;i++)
   {for(j=0;j<=Nk;j++)
              T0[1][j]=T[j];
           }
detar=1.0/Nk;
detax=1.0/Nk;
for(i=0;i<=Nk;i++) r=x=detar*i;
do{
        e1=0;
        e2=0;
    for(i=0;i<=Nk;i++)
       {for(j=0;j<=Nk;j++)
               t[j]=T[j];
               }
    for(n=1;n<7;n++)
        {
         for(m=0;m<3;m++)
           {for(i=1;i                {for(j=1;j                          {xw=x-x[i-1];
                    xe=x[i+1]-x;
                    rn=r[j+1]-r[j];
                    rs=r[j]-r[j-1];
                    ap=2/xw/xe+2/rs/rn+1/r[j]/rn;
                          aw=2/(xw*xw+xe*xw);                 
                          ae=2/(xe*xe+xe*xw);
                          as=2/(rs*rs+rs*rn);                  
                          an=2/(rn*rn+rs*rn)+1/r[j]/rn;  
                          T[j]=aw/ap*T[i-1][j]+as/ap*T[j-1]+ae/ap*T[i+1][j]+an/ap*T[j+1]+a0[n-1][j]/ap;
                          T0[n][j]=T[j];
                          }
                 }   
            }
   
          for(i=1;i              {for(j=1;j                  {xw=x-x[i-1];
                  xe=x[i+1]-x;
                  rn=r[j+1]-r[j];
                  rs=r[j]-r[j-1];
                  ap=2/xw/xe+2/rs/rn+1/r[j]/rn;
                        aw=2/(xw*xw+xe*xw);                 
                        ae=2/(xe*xe+xe*xw);
                        as=2/(rs*rs+rs*rn);                  
                        an=2/(rn*rn+rs*rn)+1/r[j]/rn;
                        b[j]=a0[n-1][j]-ap*T[j]+aw*T[i-1][j]+as*T[j-1]+ae*T[i+1][j]+an*T[j+1];
                 }
              }
   
           Nk=(Nk+1)/2;
           r[0]=x[0]=0;
           r[1]=x[1]=pow(2,(n-2))*detar+0.5*detar;
           for(i=2;i=x=r[1]+(i-1)*(1-2*r[1])/(Nk-2);
           r[Nk]=x[Nk]=1;
           for(i=1;i               {for(j=1;j                   {a[j]=(b[2*i-1][2*j]+b[2*i-1][2*j-1]+b[2*i][2*j]+b[2*i][2*j-1])/4;
                   a0[n][j]=a[j];                        
                   }
        
               }
           for(i=0;i<=Nk;i++)
               {for(j=0;j<=Nk;j++)
                        T[j]=0;
                   }
    }       

    Nk=Nk*2-1;
    for(n=5;n>0;n--)
       {
        Nk=Nk*2-1;
        if (Nk==pow(2,k)+1) for(i=0;i<=Nk;i++) r=x=detar*i;
        else {r[0]=x[0]=0;
              r[1]=x[1]=pow(2,(n-2))*detar+0.5*detar;
              for(i=2;i=x=r[1]+(i-1)*(1-2*r[1])/(Nk-2);
               r[Nk]=x[Nk]=1;
                 }
        for(i=1;i<(Nk/2);i++)
           {for(j=1;j<(Nk/2);j++)
                   {T0[n][2*i-1][2*j]=T0[n+1][j]+T0[n][2*i-1][2*j];
                    T0[n][2*i-1][2*j-1]=T0[n+1][j]+T0[n][2*i-1][2*j-1];       
                    T0[n][2*i][2*j]=T0[n+1][j]+T0[n][2*i][2*j];       
                    T0[n][2*i][2*j-1]=T0[n+1][j]+T0[n][2*i][2*j-1];       
                       }
            }
      
        for(m=0;m<3;m++)
           {for(i=1;i                {for(j=1;j                          {xw=x-x[i-1];
                    xe=x[i+1]-x;
                    rn=r[j+1]-r[j];
                    rs=r[j]-r[j-1];
                    ap=2/xw/xe+2/rs/rn+1/r[j]/rn;
                          aw=2/(xw*xw+xe*xw);                 
                          ae=2/(xe*xe+xe*xw);
                          as=2/(rs*rs+rs*rn);                  
                          an=2/(rn*rn+rs*rn)+1/r[j]/rn;                 
                          T0[n][j]=aw/ap*T0[n][i-1][j]+as/ap*T0[n][j-1]+ae/ap*T0[n][i+1][j]+an/ap*T0[n][j+1]+a0[n][j]/ap;
                         }
                }
             }
        for(i=0;i<=Nk;i++)
           {for(j=0;j<=Nk;j++)
                       T[j]=T0[1][j];
           }

        }
   for(i=0;i<=Nk;i++)
      {for(j=0;j<=Nk;j++)
                 {e2=fabs(t[j]-T[j]);
                  if (e2>e1) e1=e2;
                  }
              }
}while (e1>0.001);
for(i=0;i<=Nk;i++)
        {for(j=0;j<=Nk;j++)
        (printf("T[%d][%d]=%lf   ",i,j,T[j]));
        }
}
蓝色三井
4楼2009-12-23 19:43:43
已阅   关注TA 给TA发消息 送TA红花 TA的回帖

lansesanji

银虫 (小有名气)

撒谎那个面那个程序,如果把可换成7,numb换成130,程序就崩溃了,真的不知道怎么回事啊
蓝色三井
5楼2009-12-23 19:45:01
已阅   关注TA 给TA发消息 送TA红花 TA的回帖

lansesanji

银虫 (小有名气)

那个面那个程序,如果把可换成7,numb换成130,程序就崩溃了,真的不知道怎么回事啊
蓝色三井
6楼2009-12-23 19:45:29
已阅   关注TA 给TA发消息 送TA红花 TA的回帖

lansesanji

银虫 (小有名气)

其实这个是数组溢出的问题,请问谁有办法能让他不溢出啊,就是让存储空间大一点啊
蓝色三井
7楼2009-12-23 22:42:32
已阅   关注TA 给TA发消息 送TA红花 TA的回帖

hyoungdecel

银虫 (小有名气)

手机党,看那题都不知所云了。。。
8楼2010-01-16 09:10:52
已阅   关注TA 给TA发消息 送TA红花 TA的回帖

Glass_fish

金虫 (正式写手)

数组长度超出了编译器的范围,建议换一个编译器试一试,
9楼2010-01-29 15:37:15
已阅   关注TA 给TA发消息 送TA红花 TA的回帖

aisingioro

金虫 (正式写手)

数组大小与编译器有关,tc小模式好像是64k(可能会少一点)   
因为局部变量是在栈内存储的,而栈的大小是编译器编译时就确定的.
10楼2010-03-27 12:50:58
已阅   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 lansesanji 的主题更新
信息提示
请填处理意见