我试图在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坐标和角度?例如,我会使用表格视图吗?谢谢你的任何建议。
答案 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 < h
是n
而int
是h
。虽然我通常担心浮点循环变量,但我更多担心浮点被用于空洞数量。这是问题所指明的吗?