【发布时间】:2015-07-26 23:19:48
【问题描述】:
我正在使用此链接上的公式制作计算器: http://cereference.com/book/surveying-and-transportation-engineering/simple-curves-or-circular-curves#sthash.qrD1VOm6.08csgYq9.dpbs
和
https://www.easycalculation.com/engineering/civil/highways-horizontal-curve.php
已编辑问题!
所以我使用 math.h 库来使用 sin、tan、cos 和 sec 函数,但根据我的公式,答案不正确......所以要测试,假设我的角度为 36和 286 的半径......所以切线(切线)的答案必须是 92.927。我的下一个问题是如何使用 sec 函数?我评论它是因为它不会编译...还有 tan、sin 和 cos。
#include<stdio.h>
#include<conio.h>
#include<math.h>
int main(){
double length, angle, radius, tangent, chord, midordinate, external, degree;
double pcurve, pintersection, ptangent;
double ulength, uangle, uradius, utangent, uchord, umidordinate, uexternal;
double pi;
double choice, choice2, given;
pi = 3.14159;
printf("Enter radius: ");
scanf("%lf",&radius);
printf("Enter angle: ");
scanf("%lf",&angle);
utangent = radius * (tan(angle/2));
uchord = 2*radius*(sin(angle/2));
umidordinate = radius - (radius*(cos(angle/2)));
//uexternal = radius * (sec(angle/2)) - radius;
printf("tangent = %lf\n",utangent);
printf("chord = %lf\n",uchord);
printf("ordinate = %lf\n",umidordinate);
//printf("%lf\n",uexternal);
getch();
return 0;
}
【问题讨论】:
-
您使用了错误的格式说明符。
%lf必须用于扫描double。 (不过,%f应该用于 printf)。此外,检查 scanf 的返回值以检测错误。 -
3.14159 远非双精度。使用
M_PI或boost::math::constants::pi
标签: c math trigonometry