Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 尝试将包含两个元素的结构传递给函数(不使用指针),以获得两个元素的新输出_C_Function - Fatal编程技术网

C 尝试将包含两个元素的结构传递给函数(不使用指针),以获得两个元素的新输出

C 尝试将包含两个元素的结构传递给函数(不使用指针),以获得两个元素的新输出,c,function,C,Function,所以我写了一段代码来翻译x和y的一个点,它们是一个结构的元素,在x方向,y方向,并根据用户输入的x,y和θ角,围绕原点旋转。我如何通过旋转函数传递结构(不使用指针,因为我们还没有讨论),谢谢。代码如下,谢谢 #include <stdio.h> #include <math.h> typedef struct { float x; float y; }coordinate; float xNew(float x, float x2); float yNew(fl

所以我写了一段代码来翻译x和y的一个点,它们是一个结构的元素,在x方向,y方向,并根据用户输入的x,y和θ角,围绕原点旋转。我如何通过旋转函数传递结构(不使用指针,因为我们还没有讨论),谢谢。代码如下,谢谢

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

typedef struct
{
float x;
float y;
}coordinate;

float xNew(float x, float x2);
float yNew(float y, float y2);
coordinate Rotate( coordinate pointA, float angle);


void main()

{

coordinate pointA;
float x,y,x2,y2, theta;
 coordinate newpoints;

printf("Enter coordinates>");
scanf("%f%f", &pointA.x, &pointA.y);

printf("Enter x offset>");
scanf("%f", &x2);
x = xNew(pointA.x, x2);

printf("Enter y offset>");
scanf("%f", &y2);
y = yNew(pointA.y, y2);

printf("Enter rotation value in degrees");
scanf("%f", &theta);
newpoints = Rotate(pointA, theta);

printf("offsets were %f%f\n",x2,y2 );
printf("new coords are%f%f\n", x,y);
pointA.x = x;
pointA.y = y;
printf("struc coords are%f%f", pointA.x, pointA.y);
return;
}

float xNew(float x, float x2)
{
float xpos;

xpos = x+x2;
return(xpos);
}

float yNew(float y, float y2)
{
float ypos;

ypos = y + y2;
return(ypos);

coordinate Rotate( pointA, float angle)
{

  coordinate pointA;
  float theta;

pointA.x = cos(theta)*pointA.x - sin(theta)*pointA.y;
pointA.y = sin(theta)*pointA.x + cos(theta)*pointA.y;

return(pointA);

}
}
#包括
#包括
类型定义结构
{
浮动x;
浮动y;
}协调;
浮动x新(浮动x,浮动x2);
浮动yNew(浮动y,浮动y2);
坐标旋转(坐标点A、浮动角度);
void main()
{
坐标点A;
浮点数x,y,x2,y2,θ;
协调新点;
printf(“输入坐标>”;
scanf(“%f%f”、&pointA.x和&pointA.y);
printf(“输入x偏移量>”;
扫描频率(“%f”和x2);
x=xNew(点A.x,x2);
printf(“输入y偏移量>”;
扫描频率(“%f”和“y2”);
y=yNew(点a.y,y2);
printf(“以度为单位输入旋转值”);
扫描频率(“%f”和θ);
新点=旋转(点A,θ);
printf(“偏移量为%f%f\n”,x2,y2);
printf(“新坐标为%f%f\n”,x,y);
点a.x=x;
点a.y=y;
printf(“结构坐标为%f%f”,点A.x,点A.y);
回来
}
浮动x新(浮动x,浮动x2)
{
浮动XPO;
xpos=x+x2;
返回(xpos);
}
浮动yNew(浮动y,浮动y2)
{
浮动YPO;
ypos=y+y2;
回报率(YPO);
坐标旋转(点A、浮动角度)
{
坐标点A;
浮动θ;
点a.x=cos(θ)*点a.x-sin(θ)*点a.y;
点a.y=sin(θ)*点a.x+cos(θ)*点a.y;
返回(点A);
}
}
编辑:发布更新的代码,只得到一个错误

错误:“浮动”之前应为“)” 坐标旋转(点A、浮动角度)
我不知道发生了什么首先,尝试缩进代码以提高可读性。 第二,这是我的第一个答案,请耐心等待

现在,我注意到的第一个错误是:

float yNew(float y, float y2)
{
float ypos;

ypos = y + y2;
return(ypos);

coordinate Rotate( pointA, float angle)
{

  coordinate pointA;
  float theta;

pointA.x = cos(theta)*pointA.x - sin(theta)*pointA.y;
pointA.y = sin(theta)*pointA.x + cos(theta)*pointA.y;

return(pointA);

}
}

  • 当您希望函数位于“外部”时,
    Rotate
    函数似乎是嵌套的
  • pointA
    已用作参数(未声明类型),然后您将在函数中重新声明它
  • 3.
    theta
    正在声明并未初始化使用。事实上,它是一个冗余变量

  • pointA
    声明时不带类型<代码>坐标
  • 更新后的代码为:

    float yNew(float y, float y2)
    {
    float ypos;
    
    ypos = y + y2;
    return(ypos);
    }
    
    coordinate Rotate(coordinate pointA, float angle)
    {
    
      coordinate pointB;
    
    pointB.x = cos(angle)*pointA.x - sin(angle)*pointA.y;
    pointB.y = sin(angle)*pointA.x + cos(angle)*pointA.y;
    
    return(pointB);
    
    }
    
    您已经声明了
    newpoints
    ,但从未使用过它。因此,输出值是原始结构(输入值)。试试这个:

    printf("Enter rotation value in degrees");
    scanf("%f", &theta);
    newpoints = Rotate(pointA, theta);
    
    printf("offsets were %f%f\n",x2,y2 );
    printf("new coords are%f%f\n", x,y);
    
    printf("struc coords are%f   %f", newpoints.x, newpoints.y);
    

    不过,我没有检查转换公式。

    很抱歉,这是旧的,新代码出现了,我不知道如何将我的pointA struc传递给函数,以便在旋转时获得新坐标。@TomKarzes。你发布所有这些代码只是为了问语法错误吗?如果是这样,请逐字逐句地发布整个错误消息。是的,有代码有助于找到问题,我认为发布一个简单的示例有助于找到问题。如果有什么问题的话,发布你的实际项目会让它变得模糊。我只是在发布之前注意到了最好的结果,谢谢你的建议,我更新了代码(我知道我哪里出错了),它仍然会给出相同的语法错误:/在哪一行你会得到错误?因为在我的IDE(Eclipse)中,它没有显示此类错误。它的第61:26I行使用{}关闭了yNew函数,但是我仍然得到了错误它现在可以工作了!)非常感谢。所以坐标点a可以读作一个参数,比如“输入一个类似坐标的结构”?