[C#] Console IO Quadratic Equation BGCoder Zero test


1

в третия zero test на въпросната задача очаквания отговор е 

3.00

0.00

пре верен отговор по условие ( трябва да се сортират мин -> макс )

0.00

3.00

При нормалните тестове си е окей или поне ми приема за верни решенията след като оставих редовете, в които сортирам output-а




Отговори



0
Това е печатна грешка в .md file. В самите тестове - това е тест №1 аутпута е верен. В BG Coder ще ти даде верен резултат

от dushka.dragoeva (1324 точки)


1
И при мен се получава същото трети нулев тест не минава. И изкарвам само 70/100.
using System; class QuadraticEquation { static void Main() { double a = double.Parse(Console.ReadLine()); double b = double.Parse(Console.ReadLine()); double c = double.Parse(Console.ReadLine()); double sqrtpart = b * b - 4 * a * c; double x, x1, x2; if (sqrtpart > 0) { x1 = (-b - Math.Sqrt(sqrtpart)) / (2 * a); x2 = (-b + Math.Sqrt(sqrtpart)) / (2 * a); if (x1<=x2) { Console.WriteLine("{0:F2}\n{1:F2}", x1, x2); } else { Console.WriteLine("{0:F2}\n{1:F2}", x2, x1); } } else if ((-b - Math.Sqrt(sqrtpart)) / (2 * a)>= 0 && (-b + Math.Sqrt(sqrtpart)) / (2 * a) >= 0) { x = (-b + Math.Sqrt(sqrtpart)) / (2 * a); Console.WriteLine("{0:F2}", x); } else { Console.WriteLine("no real roots"); } } }

от chernogorov (220 точки)


3

С това решение не обхващаш всички случаи.

if (sqrtpart > 0) //при дискриминанта D > 0 има 2 корена и т.н. това е ОК

от 26  до 30 ред: не е необходимо да сравняваш корените с 0, а отново дискриминантата:

if (sqrtpart == 0) // при D=0 имаш 1 корен само { Console.WriteLine("{0:F2}", x1); } else // това вече е при D<0, няма корени { Console.WriteLine("no real roots"); }


Не знам дали успях да обясня добре. Ако имаш въпроси, питай. Това е моето решение.

using System; class QuadraticEquation { static void Main() { double a = double.Parse(Console.ReadLine()); double b = double.Parse(Console.ReadLine()); double c = double.Parse(Console.ReadLine()); double discriminant = (b*b - (4*a*c)); double x1 = (-b - Math.Sqrt(discriminant)) / (2*a); double x2 = (-b + Math.Sqrt(discriminant)) / (2*a); if (discriminant > 0) { Console.WriteLine("{0:F2}", Math.Min(x1, x2)); Console.WriteLine("{0:F2}", Math.Max(x1, x2)); } else if (discriminant == 0) { Console.WriteLine("{0:F2}", x1); } else { Console.WriteLine("no real roots"); } } }


от Pepi.Ka (922 точки)

0
Разбрах къде ми е грешката Благодаря ти ;)

от chernogorov (220 точки)