首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

请们看看,有关问题很奇怪!帮忙看看

2012-02-22 
请大虾们看看,问题很奇怪!帮忙看看!我自己写了除法的子函数div,可把它运用到程序中,输出的波形就不对了,帮

请大虾们看看,问题很奇怪!帮忙看看!
我自己写了除法的子函数div,可把它运用到程序中,输出的波形就不对了,帮忙看下!int   div(int   data_s,int   data_z)
{int   z=0;
if(data_s <0||data_z <0)
  {   int   x=abs(data_s),y=abs(data_z);
  while(x> =y)
  {x-=y;++z;}}
else
{   int   x=data_s,y=data_z;
  while(x> =y)
  {x-=y;++z;}
}
    if(data_s <0||data_z <0)
      return   (-z);
    else
      return   z;
}
void   adptive(int   e_in)
{
    int   i,temp_input_pos;
    long   P;
    long   tmp_wn;
    long   e_xn;
    for(i=0;i <FIR_LEN;i++)
    {
temp_input_pos=input_pos+i+1;
temp_input_pos&=0x00ff;//temp_input_pos-((temp_input_pos> > 8) < <8);
e_xn=(long)e_in*(long)xn[temp_input_pos];
P   =div(e_xn,miu);//P=e_xn/miu;
tmp_wn   =   (long)wn[i] < <16L;
tmp_wn+=   32768   +   P;
wn[i]   =   tmp_wn> > 16L;
    }

}
上面是两个子函数,下面的要调用div,要是直接用/而不用div,输出就对了的,如果把div单独运行,起结果也是对了的!求大虾们帮忙啊!


[解决办法]
这段有问题,其他还没看
if(data_s <0||data_z <0)
return (-z);
else
return z;
一个 <0,另一个> 0才返回-z,两个都 <0返回z

int div(int data_s,int data_z)
{int sign=1,z=0;
if(data_s <0){sign=!sign;data_s=-data_s;}
else if(data_s==0){return z;}
if(data_z <0){sign=!sign;data_z=-data_z;}
else if(data_z==0){return z;}
while(data_s> =data_z){data_s-=data_z;++z;}
return sign?z:-z;
}

热点排行