Я делаю калькулятор, используя формулу по этой ссылке: http://cereference.com/book/surveying-and-transportation-engineering/simple-curves-or-circular-curves#sthash.qrD1VOm6.08csgYq9.dpbsКак использовать sin, tan, cos и sec в программе C?
и
https://www.easycalculation.com/engineering/civil/highways-horizontal-curve.php
EDITED ВОПРОС!
Поэтому я использовал библиотеку math.h, чтобы использовать функции sin, tan, cos и sec, но ответы не соответствуют основанию моей формулы ... Итак, чтобы проверить, скажем, у меня есть угол 36 и радиусом 286 ... так что ответ для касательной (utangent) должен быть равен 92,927. и мой следующий вопрос заключается в том, как использовать функцию sec? Я прокомментировал это, потому что он не будет компилироваться ... Также с загаром, грехом и ценой.
#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;
}
возможно дубликат (http://stackoverflow.com/questions/840081/what-does-floating- point-error-1-j-mean) – melpomene
Вы используете неправильный спецификатор формата. '% lf' необходимо использовать для сканирования' double'. ('% f' следует использовать для печати, однако). Также проверьте возвращаемое значение scanf для обнаружения ошибок. –
3.14159 далек от двойной точности. используйте 'M_PI' или' boost :: math :: константы :: pi' –