Определить метод, позволяющий распознавать наличие вещественных корней в квадратном уравнении - C#
Формулировка задачи:
Даны три квадратных уравнения ax^2+bx+c,bx^2+ax+c,cx^2+ax+b сколько из них имеют вещественные корни. Определить метод, позволяющий распознавать наличие вещественных корней в квадратном уравнении.
Решение задачи: «Определить метод, позволяющий распознавать наличие вещественных корней в квадратном уравнении»
textual
Листинг программы
public class Program
{
const double EPSILON = 0.0001;
private static void Main()
{
double a = 1;
double b = -4;
double c = 4;
int count = GetCount(a, b, c);
count += GetCount(b, a, c);
count += GetCount(c, a, b);
Console.WriteLine(count);
}
private static int GetCount(double a, double b, double c)
{
double d = b * b - 4 * a * c;
if (d < 0)
return 0;
double x1 = (-b - Math.Sqrt(d)) / a / 2;
double x2 = (-b + Math.Sqrt(d)) / a / 2;
int count = IsFloat(x1) ? 1 : 0;
count += IsFloat(x2) ? 1 : 0;
return d < EPSILON ? count / 2 : count;
}
private static bool IsFloat(double x)
{
return Math.Abs(x - Math.Truncate(x)) > EPSILON;
}
}