C#

Почему "y" не присвоено значение?

Double y, c;
int x;
Console.Write("Введите x =");
x = Convert.ToInt32(Console.ReadLine());
if (x < -5) y = (2 * x + 5);
else
if (-5 < x || x <= 5) y = (10);
else
if (5 < x || x < 10) y = (2 * Math.Pow(x, 2));
else
if (x >= 10) y = (Math.Sqrt(x));
else
if (x == -5) Console.Write("Неверное значение x");
c = x + 2 * y;
Console.WriteLine("c="+c);
Console.WriteLine("y="+y);
Vоdunoi Berdnikov
Vоdunoi Berdnikov
216
Double y = 0, c;
Farrux Qalandarov
Farrux Qalandarov
62 318
Лучший ответ
Vоdunoi Berdnikov а по другому как-нибудь можно?
У тебя ошибки в условиях. должны быть &&. иначе 45 проходит по второму if, т.к. вторая часть условия проверяться не будет при ||. 45 > -5 это true => y получит значение 10, а это не верно.
вообще на C# это выглядит так.
 double y, c; 
int x;
Console.Write("Введите x = ");
if (int.TryParse(Console.ReadLine(), out x))
{
try
{
y = x switch
{
< -5 => 2 * x + 5,
> -5 and 10,
> 5 and < 10 => 2 * x * x,
>= 10 => Math.Sqrt(x),
-5 => throw new Exception("Неверное значение x")
};
c = x + 2 * y;
Console.WriteLine($"c = {c:N3}");
Console.WriteLine($"y = {y:N3}");
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
else
Console.WriteLine("Ошибка ввода. Ожидалось целое число.");
почитай про pattern matching
https://learn.microsoft.com/ru-ru/dotnet/csharp/fundamentals/functional/pattern-matching
Проще говоря. В начале у тебя Double y, c;
Это ты типа, говоришь: "У меня есть коробка y и коробка с!"
Потом идут ifы, в них ты кладешь в коробку шарик с числом нарисованным на нем. Однако, если ни один if не будет true, то ничего ты в коробку не положишь. Если в ней ничего не лежит, то как мы можем узнать, что там лежит?
autoviktor74
autoviktor74
664