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("Расчёт для данного уравнения завершён");
}
}
}