| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3858 人关注过本帖
标题:大家帮忙看看我的程序啊!急!
只看楼主 加入收藏
liaobiao0903
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2008-7-26
收藏
得分:0 
你的TC环境是不有问题啊?
2008-07-29 13:00
liaobiao0903
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2008-7-26
收藏
得分:0 
好,我改进了一下,楼主再看看
double f11(double x,double e,double z)
  {
 if((e<=0.002)&&(e>=0.0))
  f11=16.7*((2.0*(e-z*x))/0.002-((e-z*x)/0.002)*((e-z*x)/0.002));
     else if((e<=0.0033)&&(e>=0.002))
    f11=16.7*(1.0-0.15*((e-z*x)-0.002)/0.0013);
       }


      double f12(double x,double z,double e)
      {
      f12=16.7*((2.0*(e-z*x))/0.002-((e-z*x)/0.002)*((e-z*x)/0.002));

      }

#include "math.h"
  double fftsf(x)
  double x;
  { double y;
    y=f11(x);
    return(y);
  }

   double fftsf(x)
  { double y;
    y=f(12);
    return(y);
  }
  #include "stdio.h"
    #include "9ffts.c"
    main()
    {
      double a,eps,e,k,fy1,fy2,es1,es2,h,ey1,ey2;
      double z,xx1,xx2,gh1,gh2,t11,b;
      double a12,b12,t12,h0,yn;
      k=0.50;
      h0=315.0;
      while(e<=0.0033)
      z=e/(k*h0);
      xx1=300.00;
      xx2=-300.00;
      gh1=0.002/z;
      a=0.0; b=k*h0-gh1; eps=0.000001;
      t11=ffts(a,b,eps,f11);
    a=k*h0-gh1; b=k*h0; eps=0.000001;
      t12=ffts(a,b,eps,f12);
  yn=t11+t12;
while ((xx2<=yn)&&(yn<=xx1))
       z=e/(k*h0);
       scanf("%f,%f,%f",&e,&k,&z);
        if(yn<xx2)
         do {k=k+0.0001;}
         while (xx2<=yn);
        if(yn>xx1)
          do {k=k-0.0001;}
         while (yn<=xx1);
        printf("%f\n","%f\n",&z,&yn);
      return 0;
     }
主要是里面的错误怎么个改法
2008-07-29 13:04
liaobiao0903
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2008-7-26
收藏
得分:0 
经过改正后只有一处警告和错误了  //#include "9ffts.c"是求函数积分里面的一个函数
double f11(double x,double e,double z)
  { if((e<=0.002)&&(e>=0.0))
  return 16.7*((2.0*(e-z*x))/0.002-((e-z*x)/0.002)*((e-z*x)/0.002));
     else if((e<=0.0033)&&(e>=0.002))
    return 16.7*(1.0-0.15*((e-z*x)-0.002)/0.0013);
       }(警告:函数要返回一个值)
      double f12(double x,double z,double e)
      {
      return 16.7*((2.0*(e-z*x))/0.002-((e-z*x)/0.002)*((e-z*x)/0.002));  }
  #include "stdio.h"
#include "9ffts.c"
    main()
    {  double a,eps,e,k,fy1,fy2,es1,es2,h,ey1,ey2;
      double z,xx1,xx2,gh1,gh2,t11,b;
      double a12,b12,t12,h0,yn;
      k=0.50;
      h0=315.0;
      while(e<=0.0033)
      z=e/(k*h0);
      xx1=300.00;
      xx2=-300.00;
      gh1=0.002/z;
      a=0.0; b=k*h0-gh1; eps=0.000001;
      t11=ffts(a,b,eps,f11);
    a=k*h0-gh1; b=k*h0; eps=0.000001;
      t12=ffts(a,b,eps,f12);
     yn=t11+t12;
    while ((xx2<=yn)&&(yn<=xx1))
       z=e/(k*h0);
       scanf("%f,%f,%f",&e,&k,&z);
        if(yn<xx2)
         do {k=k+0.0001;}
         while (xx2<=yn);
        if(yn>xx1)
          do {k=k-0.0001;}
         while (yn<=xx1);
        printf("%f\n","%f\n",&z,&yn);
      return 0;
     }
 #include "math.h"   
  double fftsf(x,e,z)
  double x;
  { double y;
    y=f11(x,e,z);
    return(y);
  }

   double fftsf(x,e,z)
  { double y;   (错误:重复定义函数fftsf)
    y=f12(x,e,z);
    return(y);
  }
不知道问题出在哪啊?
2008-07-29 16:15
StarWing83
Rank: 8Rank: 8
来 自:仙女座大星云
等 级:贵宾
威 望:19
帖 子:3951
专家分:748
注 册:2007-11-16
收藏
得分:0 
亲爱的,你的代码写得真漂亮~~

专心编程………
飞燕算法初级群:3996098
我的Blog
2008-07-29 16:16
liaobiao0903
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2008-7-26
收藏
得分:0 
楼主帮忙看一哈啊,谢谢了。
2008-07-29 16:21
iFreeBSD
Rank: 4
等 级:业余侠客
威 望:4
帖 子:474
专家分:236
注 册:2007-11-5
收藏
得分:0 
ts.c:11:19: error: 9ffts.c: No such file or directory
ts.c:49: error: redefinition of 'fftsf'
ts.c:43: error: previous definition of 'fftsf' was here

这是重新编译结果

[[it] 本帖最后由 iFreeBSD 于 2008-7-29 20:10 编辑 [/it]]

without further ado, let’s get started
2008-07-29 19:37
liaobiao0903
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2008-7-26
收藏
得分:0 
我发现你们不是来讨论帮助别人的,为什么把程序发在这里,就是有问题啊!再有你上面编译出来的东西,我这里没有出现。那什么样的代码才舒服呢?你要说出来啊!大哥,这是关于我专业的程序,不是C语言课本里的一些你觉得舒服的东西。在指出错误的同时,应该提出一些改进的意见和建议才是吧。
2008-07-29 19:48
iFreeBSD
Rank: 4
等 级:业余侠客
威 望:4
帖 子:474
专家分:236
注 册:2007-11-5
收藏
得分:0 
ts.c:11:19: error: 9ffts.c: No such file or directory //不知道你这个文件写在哪的。
ts.c:49: error: redefinition of 'fftsf'
ts.c:43: error: previous definition of 'fftsf' was here
//你的函数f11,f12最好加上断言,我搞不懂你为什么定义两个同名函数

without further ado, let’s get started
2008-07-29 20:15
liaobiao0903
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2008-7-26
收藏
得分:0 
对于楼主没有找到的函数是这样的。有两个,把他们放到INCLUDE目录下就可以了。
一个是:
 #include "math.h"
  double ffts(a,b,eps,f)
  double a,b,eps,(*f)();
  { int n,k;
    double fa,fb,h,t1,p,s,x,t;
    fa=(*f)(a); fb=(*f)(b);
    n=1; h=b-a;
    t1=h*(fa+fb)/2.0;
    p=eps+1.0;
    while (p>=eps)
      { s=0.0;
        for (k=0;k<=n-1;k++)
          { x=a+(k+0.5)*h;
            s=s+(*f)(x);
          }
        t=(t1+h*s)/2.0;
        p=fabs(t1-t);
        t1=t; n=n+n; h=h/2.0;
      }
    return(t);
  }
另外一个是:
   #include "stdio.h"
  #include "9ffts.c"
  main()
  { double a,b,eps,t,fftsf(double);
    a=0.0; b=1.0; eps=0.000001;
    t=ffts(a,b,eps,fftsf);
    printf("\n");
    printf("t=%e\n",t);
    printf("\n");
  }

  #include "math.h"
  double fftsf(x)
  double x;
  { double y;
    y=exp(-x*x);
    return(y);
  }

我自己的程序我作了修改了,还有一个警告,不晓得怎么改。
 double f11(double x,double e,double z)
  {
 if((e<=0.002)&&(e>=0.0))
  return 16.7*((2.0*(e-z*x))/0.002-((e-z*x)/0.002)*((e-z*x)/0.002));
     else if((e<=0.0033)&&(e>=0.002))
    return 16.7*((1.0-0.15*((e-z*x)-0.002)/0.0013));
      else return 0;
    }


      double f12(double x,double z,double e)
      {
      return 16.7*((2.0*(e-z*x))/0.002-((e-z*x)/0.002)*((e-z*x)/0.002));

      }


  #include "stdio.h"
    #include "9ffts.c"
    main()
    {
      double a,eps,e,k,fy1,fy2,es1,es2,h,ey1,ey2;
      double z,xx1,xx2,gh1,gh2,t11,b;
      double a12,b12,t12,h0,yn;
      scanf("%f",&e);
      k=0.50;
      h0=315.0;
      while(e<=0.0033)
      z=e/(k*h0);
      xx1=300.00;
      xx2=-300.00;
      gh1=0.002/z;
      a=0.0; b=k*h0-gh1; eps=0.000001;
      t11=ffts(a,b,eps,f11);
    a=k*h0-gh1; b=k*h0; eps=0.000001;
      t12=ffts(a,b,eps,f12);
     yn=t11+t12;
    while ((xx2<=yn)&&(yn<=xx1))
       z=e/(k*h0);
       scanf("%f,%f,%f",&e,&k,&z);
        if(yn<xx2)
         do {k=k+0.0001;}
         while (xx2<=yn);
        if(yn>xx1)
          do {k=k-0.0001;}
         while (yn<=xx1);
        printf("z= %f\n","yn= %f\n",&z,&yn);
      return 0;
     }
 #include "math.h"
  double fftsf(x,e,z)
 {
  { double y;
    y=f11(x,e,z);
    return y;
    }

    {
    double y;
    y=f12(x,e,z);     (warning:unreachable code)
    return(y);
     }
       }
2008-07-29 21:47
iFreeBSD
Rank: 4
等 级:业余侠客
威 望:4
帖 子:474
专家分:236
注 册:2007-11-5
收藏
得分:0 
我建议你采用ANSI C 标准定义函数,你程序的警告有可能同你的编译器有关(不知道你用什么编译器,我猜多半是TC),还有你的代码风格真的不好。

without further ado, let’s get started
2008-07-29 23:46
快速回复:大家帮忙看看我的程序啊!急!
数据加载中...
 
   



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

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