Написать функцию, обеспечивающую решение квадратного уравнения - C#
Формулировка задачи:
Написать функцию, обеспечивающую решение квадратного уравнения. Параметрами функции должны быть коэффициенты a, b, c (входные параметры) и корни уравнения x1, x2 (выходные параметры). Значение, возвращаемое функцией, должно передавать в вызывающую программу информацию о наличии у уравнения корней: 2 – два разных корня, 1 – корни одинаковые, 0 – уравнение не имеет решения. Кроме того, функция должна проверять корректность исходных данных. Если исходные данные неверные, то функция должна возвращать -1.
Непонятно условие задания. Что нужно возвращать индексы или корни? Если индексы, то у меня ошибка в switch case, нельзя использовать тип double.
static void Main(string[] args)
{
double x1, x2;
Console.Write("Введите a:");
double a = Convert.ToDouble(Console.ReadLine());
Console.Write("Введите b:");
double b = Convert.ToDouble(Console.ReadLine());
Console.Write("Введите c:");
double c = Convert.ToDouble(Console.ReadLine());
switch (Program.Root(out x1, out x2))
{
case -1:
Console.WriteLine("Исходные данные неверные");
break;
case 0:
Console.WriteLine("Нет решения среди действительных значений,т.к дискриминант меньше нуля");
break;
case 1:
Console.WriteLine("имеет один корень уравнения{0}", x1);
break;
case 2:
Console.WriteLine("Имеет два корня уравнения: первый корень {0}\nвторой корень {1}", x1, 2);
break;
}
}
static double Root(double a,double b,double c,out double x1,out double x2)
{
x1 = 0;
x2 = 0;
double d =Math.Pow(b,2)-4*a*c;
if (d < 0)
{
return 0;
}
else if (d == 0)
{
x1 = -b / (2 * a);
return 1;
}
else if (d > 0)
{
x1 = -b / (2 * a) - (Math.Sqrt(d)) / (2 * a);
x2 = -b / (2 * a) + (Math.Sqrt(d)) / (2 * a);
return 2;
}
else
return -1;
}Решение задачи: «Написать функцию, обеспечивающую решение квадратного уравнения»
textual
Листинг программы
if(a==0) return -1;