Доброго времени суток. Помогите пожалуйста найти ошибку в логике консольной программы
Прошу помочь найти ошибки в моей работе. При вводе значений получаются нули.
using System;
namespace ConsoleApp4
{
internal class Program
{
static void Main(string[] args)
{
/*Console.Write("Input x: ");
int x = Convert.ToInt32(Console.ReadLine());*/
Console.Write("Input a: ");
double a = Convert.ToDouble(Console.ReadLine());
Console.Write("Input b: ");
double b = Convert.ToDouble(Console.ReadLine());
Console.Write("Input c: ");
double c = Convert.ToDouble(Console.ReadLine());
if (a != 1)
{
double discriminant = Math.Abs(Math.Pow(b, 2)) - 4 * a * c;
if (discriminant > 0)
{
double root_one = (b - (b * 2) - Math.Sqrt(discriminant))/2*a;
Console.WriteLine($"First root: {0}", root_one);
double root_two = (b - (b * 2) + Math.Sqrt(discriminant))/2*a;
Console.WriteLine($"Second root: {0}", root_two);
} else if (discriminant == 0)
{
double only_root = (b - (b * 2) - Math.Sqrt(discriminant)) /2*a;
Console.WriteLine($"Only root: {0}", only_root);
} else if (discriminant < 0)
{
Console.WriteLine("There`s no roots in this equation");
}
}
else if (a == 1)
{
double discriminant = Math.Abs(Math.Pow(b, 2)) - 4 * a * c;
Console.WriteLine("Это приведенное квадратное уравнение");
double root_one = (b - (b * 2) - Math.Sqrt(discriminant)) / 2 * a;
Console.WriteLine($"First root: {0}", root_one);
double root_two = (b - (b * 2) + Math.Sqrt(discriminant)) / 2 * a;
Console.WriteLine($"Second root: {0}", root_two);
}
}
}
}
Ответы (1 шт):
Автор решения: S.H.
→ Ссылка
У Вас ошибка при выводе результата.
Смешаны два способа: старый, с позиционным расположением аргументов в операторе печати, и новый, задаваемый знаком доллара в начале строки.
Вы пишете:
Console.WriteLine($"First root: {0}", root_one);
А надо так:
Console.WriteLine($"First root: {root_one}");
Или, как справедливо подсказал в комментарии aepot, можно убоать знак $ в начале строки:
Console.WriteLine("First root: {0}", root_one);
Тогда всё получится:
