#include
#include
#include
#include
#include
constexpr double PI = 3.14159265358979323846;
double calculateT(double X, double A) {
if (std::isnan(X) || std::isnan(A)) {
throw std::invalid_argument("X или A не могут быть NaN");
}
return std::pow(std::sin(X), 3) + A * X;
}
double getInput(const std::string& prompt) {
double value;
while (true) {
std::cout << prompt;
std::cin >> value;
if (std::cin.fail()) {
std::cin.clear();
std::cin.ignore(std::numeric_limits::max(), '\n');
std::cerr << "Ошибка: введите корректное число." << std::endl;
} else {
std::cin.ignore(std::numeric_limits::max(), '\n');
return value;
}
}
}
void displayResult(double X, double A, double T) {
std::cout << "\n==============================\n";
std::cout << "Результат вычисления:\n";
std::cout << "T = sin^3(" << X << ") + " << A << " * " << X
<< " = " << std::fixed << std::setprecision(6) << T << "\n";
std::cout << "==============================\n\n";
}
int main() {
std::cout << "Добро пожаловать в калькулятор T = sin^3(X) + A * X!\n";
while (true) {
try {
double X = getInput("Введите значение X (в радианах): ");
double A = getInput("Введите значение A: ");
double T = calculateT(X, A);
displayResult(X, A, T);
} catch (const std::exception& e) {
std::cerr << "Произошла ошибка: " << e.what() << std::endl;
}
char choice;
std::cout << "Хотите ли вы выполнить еще один расчет? (y/n): ";
std::cin >> choice;
std::cin.ignore(std::numeric_limits::max(), '\n');
if (choice != 'y' && choice != 'Y') {
break;
}
}
std::cout << "\nСпасибо за использование калькулятора! До свидания!\n";
return 0;
}