Вероятно, вам следует попытаться определить вещи по модульному принципу, чтобы вам было легче повторно использовать и тестировать.Как уже отмечалось в комментариях, вы должны использовать двойные числа вместо числа с плавающей точкой.Причина этого проста: у double
s точность в два раза больше float
s.Чуть более читаемый код для вашей программы будет выглядеть следующим образом:
#include <iostream>
#include <cmath>
using namespace std;
double bhaskaraSin(double x) {
return (16 * x * (M_PI - x)) / (5 * M_PI * M_PI - (4 * x * (M_PI - x)));
}
double bhaskaraCos(double x) {
return (M_PI * M_PI - 4 * x * x) / (M_PI * M_PI + x * x);
}
double bhaskaraTan(double x) {
return bhaskaraSin(x) / bhaskaraCos(x);
}
// Similar for sec, csc and cot...
int main() {
double x;
cout << "Enter radians: ";
cin >> x;
cout << "The sin of " << x << " is: " << bhaskaraSin(x) << endl;
return 0;
}
Я бы посоветовал вам рассмотреть возможность использования оператора switch-case вместо if-else, чтобы позволить пользователюрешить, какую функцию применять.