#include <iostream>
#include <cmath> // Для функций log, sqrt, abs
#include <iomanip> // Для настройки вывода знаков после запятой
int main() {
// Используем double для высокой точности вычислений
double x, a, b, z;
// Ввод входных данных
std::cout << "Введите значение x: ";
std::cin >> x;
std::cout << "Введите значение a: ";
std::cin >> a;
std::cout << "Введите значение b: ";
std::cin >> b;
// 1. Проверка на деление на ноль (x/a)
if (a == 0) {
std::cout << "Ошибка: 'a' не может быть равно 0 (деление на ноль)." << std::endl;
return 1;
}
// 2. Проверка области определения корня (|x|*b >= 0)
// Так как |x| всегда >= 0, то b должно быть >= 0
if (std::abs(x) * b < 0) {
std::cout << "Ошибка: подкоренное выражение отрицательно." << std::endl;
return 1;
}
// 3. Проверка области определения логарифма (аргумент > 0)
double log_argument = std::sqrt(std::abs(x) * b) + a * x;
if (log_argument <= 0) {
std::cout << "Ошибка: аргумент логарифма должен быть больше нуля." << std::endl;
return 1;
}
// Вычисление формулы: z = ln(sqrt(|x|*b) + a*x) + x/a
z = std::log(log_argument) + (x / a);
// Вывод результата
std::cout << std::fixed << std::setprecision(4); // Вывод 4 знаков после запятой
std::cout << "Результат z = " << z << std::endl;
return 0;
}