需要一些指示

时间:2011-11-24 02:02:59

标签: iphone c

我试图在c中找出一个用螺栓圆圈模式计算x,y坐标的程序。我有数学部分正确,但无法弄清楚如何让它列出起始角度和坐标首先而不是最后和度数不要超过360.这是代码:

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

int main()
{
    float x;        //x location
    float y;        //y location
    float h;        //# of holes
    float d;        //diameter of bc
    float a;        //starting angle
    int n;          //hole count

    printf("enter dia of circle\n");
    scanf("%f", &d);
    printf("enter number of holes\n");
    scanf("%f", &h);
    printf("enter starting angle, counter clockwise from 3:00\n");
    scanf("%f", &a);

    float r = d / 2;    //radius
    float k = 360 / h;  //degrees between holes 

    for (n = 0; n < h; n++) {
        a = a + k;

        x = r * (cos(a * M_PI / 180));
        y = r * (sin(a * M_PI / 180));

        printf("%.3f, %.3f, %.2f\n", x, y, a);
    }

    return 0;
}

我这样做是为了让代码正确然后我会把它放在iPhone的目标c中,这是列出每个x&amp;的输出的最佳方法。 y坐标和角度?例如,我会使用表格视图吗?谢谢你的任何建议。

1 个答案:

答案 0 :(得分:1)

我建议用更像这样的内容替换a = a + k

float base_a;
printf("enter starting angle, counter clockwise from 3:00\n");
scanf("%f", &base_a);

for (n = 0; n < h; n++) {
    a = base_a + n*k;

重复添加浮点数会导致错误增加。也许这对此无关紧要(毕竟,你只使用float而不是double s - 但错误比float更快“累积”{{1} s,所以这是一个更紧迫的问题)但修复很容易:将差值乘以计数并将其添加到常数基数。

我也有点担心比较double - n < hninth。虽然我通常担心浮点循环变量,但我更多担心浮点被用于空洞数量。这是问题所指明的吗?