Загрузка данных


#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;
}