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


using System;

class Program
{
    static void Main()
    {
        Console.WriteLine("Программа решает квадратное уравнение ax^2 + bx + c = 0");

        double a = ReadDouble("Введите коэффициент a: ");
        double b = ReadDouble("Введите коэффициент b: ");
        double c = ReadDouble("Введите коэффициент c: ");

        SolveQuadratic(a, b, c);

        Console.WriteLine("Конец программы");
        Console.ReadKey();
    }

    // Считывает число с клавиатуры, повторяя запрос при некорректном вводе
    static double ReadDouble(string message)
    {
        double value;
        while (true)
        {
            Console.Write(message);
            string input = Console.ReadLine();

            if (double.TryParse(input, out value))
                return value;

            Console.WriteLine("Некорректный ввод, введите число (например, 2.5)");
        }
    }

    // Метод вычисляет корни квадратного уравнения ax^2 + bx + c = 0
    static void SolveQuadratic(double a, double b, double c)
    {
        Console.WriteLine($"--- Уравнение: {a}x^2 + ({b})x + ({c}) = 0 ---");
        try
        {
            if (a == 0)
            {
                throw new ArgumentException(
                    "Коэффициент a не может быть равен 0 — " +
                    "уравнение перестаёт быть квадратным");
            }

            double d = b * b - 4 * a * c;

            if (d < 0)
            {
                Console.WriteLine("Действительных корней нет (D < 0)");
            }
            else if (d == 0)
            {
                double x = -b / (2 * a);
                Console.WriteLine($"Уравнение имеет один корень: x = {x}");
            }
            else
            {
                double x1 = (-b + Math.Sqrt(d)) / (2 * a);
                double x2 = (-b - Math.Sqrt(d)) / (2 * a);
                Console.WriteLine($"Корни уравнения: x1 = {x1}, x2 = {x2}");
            }
        }
        catch (ArgumentException ex)
        {
            Console.WriteLine($"Ошибка: {ex.Message}");
        }
        finally
        {
            Console.WriteLine("Расчёт для данного уравнения завершён");
        }
    }
}