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


#include <iostream>
#include <cmath>      // Для математических функций log, sqrt, abs
#include <iomanip>    // Для форматирования вывода (setprecision)
#include <clocale>    // Для поддержки русского языка в консоли

using namespace std;

int main() {
    // Устанавливаем русский язык в консоли Visual Studio
    setlocale(LC_ALL, "Russian");

    double x, a, b, z;

    cout << "--- Программа для вычисления формулы z ---" << endl;
    
    // Ввод данных
    cout << "Введите значение x: ";
    cin >> x;
    cout << "Введите значение a: ";
    cin >> a;
    cout << "Введите значение b: ";
    cin >> b;

    // --- ПРОВЕРКИ (Математическая корректность) ---

    // 1. Проверка деления на ноль
    if (a == 0) {
        cout << "\nОшибка: Деление на ноль! Переменная 'a' не может быть равна 0." << endl;
        system("pause");
        return 1;
    }

    // 2. Вычисляем аргумент под корнем: |x| * b
    double under_sqrt = abs(x) * b;
    if (under_sqrt < 0) {
        cout << "\nОшибка: Подкоренное выражение меньше нуля!" << endl;
        system("pause");
        return 1;
    }

    // 3. Вычисляем аргумент логарифма: sqrt(|x|*b) + a*x
    double log_argument = sqrt(under_sqrt) + (a * x);

    // Логарифм определен только для положительных чисел
    if (log_argument <= 0) {
        cout << "\nОшибка: Аргумент логарифма должен быть больше нуля!" << endl;
        cout << "Текущее значение аргумента: " << log_argument << endl;
        system("pause");
        return 1;
    }

    // --- ВЫЧИСЛЕНИЕ ---
    // Формула: z = ln(sqrt(|x|*b) + ax) + x/a
    z = log(log_argument) + (x / a);

    // Вывод результата
    cout << fixed << setprecision(6); // Выводим 6 знаков после запятой
    cout << "\n----------------------------" << endl;
    cout << "Результат z = " << z << endl;
    cout << "----------------------------" << endl;

    // Чтобы консоль в VS не закрылась сразу
    system("pause");
    return 0;
}