| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 496 人关注过本帖
标题:。。。。。大家好 帮忙看看这程序错在哪。。。。。。。。。。。。。。。。。 ...
只看楼主 加入收藏
number001
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2010-4-1
结帖率:0
收藏
已结贴  问题点数:10 回复次数:3 
。。。。。大家好 帮忙看看这程序错在哪。。。。。。。。。。。。。。。。。。
我编译后出现下列错误
111.cpp(12) : error C2143: syntax error : missing ')' before 'constant'
111.cpp(12) : error C2143: syntax error : missing ';' before 'constant'
111.cpp(12) : fatal error C1004: unexpected end of file found

附程序:

#include<stdio.h>
#include<math.h>

#define N 5
#define PI 2*asin(1)
#define fm 30.0            
#define dt 1.0e-3         //时间采样间隔,单位:s
#define NT 512           //时间最大样点号


void ricker(double  fuzhi[],double fm1);
void FFT(double xr[], double xi[], int N, int M);
void ChangeOrder(double xr[], double xi[], int N);


int main()
{
     for(int w=0;w<NT;w++)
   {
       FUZHI[w]=0;
       imag[w]=0;
   }

         
    ricker(FUZHI,fm);
    FFT(FUZHI,imag,NT,9);
    for(int w1=0;w1<NT;w1++)
    {
        printf("%f",FUZHI[w1]);
        //printf("%f",imag[w1]);
    }
   
         return 1;
}


   
void ricker(double  fuzhi[],double fm1)
{
    double  x1,xx;
    for(int h=0;h<NT;h++)
    {
    x1=PI*fm1*(h-1.0/fm1);
    xx=x1*x1;
    fuzhi[h]=exp(-xx)*(1.0-2.0*xx);
    }

}

    ///////FFT变换//////////
void FFT(double xr[], double xi[], int N, int M)
{
   int L,B,JJ,P,k,ii;
   double rPartKB,iPartKB;
   double rCf[128],iCf[128];

   //计算旋转因子
   double PI2=8.0*atan(1.0);
   for(ii=0;ii<N;ii++)
   {
       rCf[ii]=cos(ii*PI2/N);
        iCf[ii]=sin(ii*PI2/N);
   }
  ChangeOrder(xr,xi,N);//调用倒序子程序
   
  //计算各级蝶形

  for(L=1;L<=M;L++)
  {
    B=(int)(pow(2,(L-1))+0.5);
    for(JJ=0;JJ<=B-1;JJ++)
    {
       P=JJ*((int)(pow(2,(M-L))+0.5));
           for(k=JJ;k<=N-1;k+=(int)(pow(2,L)+0.5))
        {  
           rPartKB=xr[k+B]*rCf[P]-xi[k+B]*iCf[P];
           iPartKB=xi[k+B]*rCf[P]+xr[k+B]*iCf[P];
           xr[k+B]=xr[k]-rPartKB;
           xi[k+B]=xi[k]-iPartKB;
           xr[k]=xr[k]+rPartKB;
           xi[k]=xi[k]+iPartKB;
        }
    }
  }

}

///////倒序子程序//////////////////////
void ChangeOrder(double xr[], double xi[], int N)
{
   int LH,N1,I1,J1,K;
   double T;
   LH=N/2;J1=LH;N1=N-2;
    for(I1=1;I1<=N1;I1++)
    {
        if(I1<J1)
        {
            T=xr[I1];xr[I1]=xr[J1];xr[J1]=T;
            T=xi[I1];xi[I1]=xi[J1];xi[J1]=T;
        }
        K=LH;
        while(J1>=K)
        {
            J1=J1-K;
            K=(int)(K/2+0.5);
        }
        J1=J1+K;
    }
}

[ 本帖最后由 number001 于 2010-5-7 10:53 编辑 ]
搜索更多相关主题的帖子: 时间 
2010-05-07 10:52
NOMIPS
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:86
专家分:537
注 册:2010-3-31
收藏
得分:5 

首先,你的N已经在前面定义为宏了,后面却用来做函数形参,
你的FUZHI,imag数组没有定义;
 for(int w=0;w<NT;w++)这种写法改成先定义int w;后
 for(w=0;w<NT;w++)
...... 编译通过了,具体怎么搞好它,自己去想...
#include<stdio.h>
#include<math.h>

#define N 5
#define PI 2*asin(1)
#define fm 30.0            
#define dt 1.0e-3         //时间采样间隔,单位:s
#define NT 512           //时间最大样点号


void ricker(double  fuzhi[],double fm1);
void FFT(double xr[], double xi[], int n, int M);
void ChangeOrder(double xr[], double xi[], int n);


int main()
{
    int FUZHI[NT];
    int imag[NT];
    int w=0;
    int w1=0;
     for(w=0;w<NT;w++)
   {
       FUZHI[w]=0;
       imag[w]=0;
   }

         
   // ricker(FUZHI,fm);
    FFT(FUZHI,imag,NT,9);
    for(w1=0;w1<NT;w1++)
    {
        printf("%f",FUZHI[w1]);
        //printf("%f",imag[w1]);
    }
   
         return 1;
}


   
void ricker(double  fuzhi[],double fm1)
{
    double  x1,xx;
    int h=0;
    for(h=0;h<NT;h++)
    {
    x1=PI*fm1*(h-1.0/fm1);
    xx=x1*x1;
    fuzhi[h]=exp(-xx)*(1.0-2.0*xx);
    }

}

    ///////FFT变换//////////
void FFT(double xr[], double xi[], int n, int M)
{
   int L,B,JJ,P,k,ii;
   double rPartKB,iPartKB;
   double rCf[128],iCf[128];

   //计算旋转因子
   double PI2=8.0*atan(1.0);
   for(ii=0;ii<N;ii++)
   {
       rCf[ii]=cos(ii*PI2/n);
        iCf[ii]=sin(ii*PI2/n);
   }
  ChangeOrder(xr,xi,n);//调用倒序子程序
   
  //计算各级蝶形

  for(L=1;L<=M;L++)
  {
    B=(int)(pow(2,(L-1))+0.5);
    for(JJ=0;JJ<=B-1;JJ++)
    {
       P=JJ*((int)(pow(2,(M-L))+0.5));
           for(k=JJ;k<=n-1;k+=(int)(pow(2,L)+0.5))
        {  
           rPartKB=xr[k+B]*rCf[P]-xi[k+B]*iCf[P];
           iPartKB=xi[k+B]*rCf[P]+xr[k+B]*iCf[P];
           xr[k+B]=xr[k]-rPartKB;
           xi[k+B]=xi[k]-iPartKB;
           xr[k]=xr[k]+rPartKB;
           xi[k]=xi[k]+iPartKB;
        }
    }
  }

}

///////倒序子程序//////////////////////
void ChangeOrder(double xr[], double xi[], int n)
{
   int LH,N1,I1,J1,K;
   double T;
   LH=n/2;J1=LH;N1=n-2;
    for(I1=1;I1<=N1;I1++)
    {
        if(I1<J1)
        {
            T=xr[I1];xr[I1]=xr[J1];xr[J1]=T;
            T=xi[I1];xi[I1]=xi[J1];xi[J1]=T;
        }
        K=LH;
        while(J1>=K)
        {
            J1=J1-K;
            K=(int)(K/2+0.5);
        }
        J1=J1+K;
    }
}
2010-05-07 13:09
南国利剑
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:29
帖 子:1165
专家分:3536
注 册:2010-4-12
收藏
得分:5 
同意楼上提出的问题。

南国利剑
2010-05-07 13:32
number001
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2010-4-1
收藏
得分:0 
谢谢上面两位了。是我太大意了。
2010-05-07 15:43
快速回复:。。。。。大家好 帮忙看看这程序错在哪。。。。。。。。。。。。。。 ...
数据加载中...
 
   



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

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