大家帮一下
#include "stdio.h"#include "math.h"
void sing(double d);
main()
{
int n,Ua,Ub,Uc,Udc;
float t;
double ta,tb,tc,t1,t2,x,y,z,Vref1,Vref2,Vref3,U1,U2,Tomx1,Tomx2,Tomx3;
scanf("%f %f %f",&Ua,&Ub,&Uc);
U1=(sqrt(2/3))*(Ua-0.5*Ub-0.5*Uc);
U2=sqrt(1/2)*(Ub-Uc); /* clarke变换 */
Vref1=U2;
Vref2=0.5*(sqrt(3)*U1-U2);
Vref3=0.5*(-sqrt(3)*U1-U2);
n=sing(Vref1)+2*sing(Vref2)+4*sing(Vref3) ; /* 判断扇区号 */
x=sqrt(3)*(U2/Udc)*t;
y=(3*U1+sqrt(3)*U2)*t/(2*Udc);
z=(sqrt(3)*U2-3*U1)*t/(2*Udc); /* 计算矢量作用常值 */
if(n==1) t1=z,t2=y;
if(n==2) t1=y,t2=-x;
if(n==3) t1=-z,t2=x;
if(n==4) t1=-x,t2=z;
if(n==5) t1=x,t2=-y;
if(n==6) t1=-y,t2=-z;
if(t1+t2>t) t1=t1*t/(t1+t2),t2=t2*t/(t1+t2); /* 按扇区号判断作用时间 */
ta=(t-t1-t2)/4;
tb=ta+0.5*t1;
tc=tb+0.5*t2;
if(n==1) Tomx1=ta,Tomx2=tb,Tomx3=tc;
if(n==2) Tomx1=tb,Tomx2=ta,Tomx3=tc;
if(n==3) Tomx1=tc,Tomx2=ta,Tomx3=tb;
if(n==4) Tomx1=tc,Tomx2=tb,Tomx3=ta;
if(n==5) Tomx1=tb,Tomx2=tc,Tomx3=ta;
if(n==6) Tomx1=ta,Tomx2=tc,Tomx3=tb; /* 按扇区号判断矢量切断点 */
}
void sing(double d)
{
if(sing(d>0))
return 1;
else
return 0; /* 判断扇区号中的子函数 */
}
最后调用函数出现了问题 哪位高手能帮我解决一下下
谢谢了