请将下面代码转换成c,谢谢procedure speedmotospeedxy(yuanx, yuany, targetx, targety : integer; speedmo :double; var vx, vy:double);
var
  yx,yy,tx,ty:double;
begin
  yx:=yuanx;
  yy:=yuany;
  tx:=targetx;
  ty:=targety;
  if (tx = yx) and (ty = yy) then
    begin
      vx := 0;
      vy := 0;
    end else begin
                  vx:=(sqr(tx - yx)) + (sqr(ty - yy));
                  vx := speedmo * (tx - yx) / sqrt(vx);
                  vy:=sqr(tx - yx) + sqr(ty - yy);
                  vy := speedmo * (ty - yy) / sqrt(vy);
             end;
end;procedure speedmotospeedxy2(yuanx, yuany, directx, directy: integer; speedmo :double; var vx, vy:double);
var
  yx,yy,dx,dy:double;
begin
  yx:=yuanx;
  yy:=yuany;
  dx:=directx;
  dy:=directy;
  if (dx = 0) and (dy = 0) then
    begin
      vx := 0;
      vy := 0;
    end else begin
               vx:=sqr(dx) + sqr(dy);
               vx := speedmo * dx / sqrt(vx);
               vy:=sqr(dx) + sqr(dy);
               vy := speedmo * dy / sqrt(vy);
             end;
end;

解决方案 »

  1.   

    void speedmotospeedxy(int yuanx,yuany,targetx,targety;double speedmo;double vx,vy)
    {
      double yx,yy,tx,ty;
      yx=(double)yuanx;
      yy=(double)yuany;
      tx=(double)targetx;
      ty=(double)targety;
      if (tx==yx) and (ty==yy) then
        {
          vx=0;
          vy=0;
          
        }
        else
        {
          vx=(sqr(tx-yx))+(sqr(ty-yy));
          vx=speedmo * (tx - yx) / sqrt(vx);
          vy=sqr(tx - yx) + sqr(ty - yy);
          vy= speedmo * (ty - yy) / sqrt(vy);
        }}
      

  2.   

    //献丑了,未经调试void speedmotospeedxy(int yuanx,int yuany,int targetx,int targety,double speedmo,double * vx,double * vy)
    {
    double yx,yy,tx,ty,a,b;

    yx=yuanx;
    yy=yuany;
    tx=targetx;
    ty=targety;

    if (tx==ty||ty=yy)
    {
    *vx=0;
    *vy=0;
    }
    else
    {
    *vx=sqrt(dx)+sqrt(dy);
    *vx=speedmo*dx/sqrt(*vx);
    *vy=sqrt(tx-yx)+sqrt(ty-yy);
    *vy=speedmo*(ty-yy)/sqrt(*vy);

    }
    }//下一段类似翻译就可以了。
      

  3.   

    void speedmotospeedxy(int yuanx, yuany, targetx, targety ;double speedmo ; double *vx, *vy)
    {
      double yx,yy,tx,ty;
      yx=yuanx;
      yy=yuany;
      tx=targetx;
      ty=targety;
      if( (tx == yx) && (ty == yy) )
        {
          vx = 0;
          vy = 0;
        }
        else {
                      vx = (sqr(tx - yx)) + (sqr(ty - yy));
                      vx = speedmo * (tx - yx) / sqrt(vx);
                      vy = sqr(tx - yx) + sqr(ty - yy);
                      vy = speedmo * (ty - yy) / sqrt(vy);
              }
      return;
    }void speedmotospeedxy2(int yuanx, yuany, directx, directy; double speedmo ; double *vx, *vy)
    {
      double yx,yy,dx,dy;
      yx=yuanx;
      yy=yuany;
      dx=directx;
      dy=directy;
      if( (dx == 0) && (dy == 0) )
        {
          vx = 0;
          vy = 0;
        }
        else {
                   vx = sqr(dx) + sqr(dy);
                   vx = speedmo * dx / sqrt(vx);
                   vy = sqr(dx) + sqr(dy);
                   vy = speedmo * dy / sqrt(vy);
              }
      return;
    }
      

  4.   

    void speedmotospeedxy2(int yuanx, int yuany, int directx, int directy,double speedmo,double *  vx, double * vy)
    {  double yx,yy,dx,dy;
      yx=yuanx;
      yy=yuany;
      dx=directx;
      dy=directy;
      if ((dx == 0)&& (dy == 0))
      {
          *vx = 0;
          *vy = 0;
      }
      else
      {
          *vx = sqr(dx) + sqr(dy);
          *vx = speedmo * dx / sqrt(*vx);
          *vy = sqr(dx) + sqr(dy);
          *vy = speedmo * dy / sqrt(*vy);          
       }
    }