Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

c# - Ошибка: "Use of unassigned local variable"

Dasha Dasha Ученик (169), на голосовании 10 лет назад
double a, b, c, srchislo;

Console.Write("Введите число a ");

a = Convert.ToDouble(Console.ReadLine());

Console.Write("Введите число b ");

b = Convert.ToDouble(Console.ReadLine());

Console.Write("Введите число c ");

c = Convert.ToDouble(Console.ReadLine());

if (a < b & a > c) srchislo = a;

else

{

if (b < a & b > c) srchislo = b;

else if (c < a & c > b) srchislo = c;

}

Console.Write("Среднее число = "+srchislo );

Console.ReadLine();
Дополнен 10 лет назад
подчеркивает ошибку Use of unassigned local variable 'srchislo'
именно в этой строке Console.Write("Среднее число = "+srchislo );
Голосование за лучший ответ
Scorpio Просветленный (24289) 10 лет назад
srchislo = 0d где нибудь в начале проставь,
а так ей только при условиях значение присваивается
АнтонПрофи (691) 6 лет назад
Братан аргументирой пожалуйтся, что эта d дает
Димос Тцарев Гуру (3437) 10 лет назад
Какой алгоритм нахождения среднего числа?
Jurijus Zaksas Искусственный Интеллект (473839) 10 лет назад
У тебя из условий следует, что эта переменная на момент редактирования не всегда будет иметь значение. Подумай над алгоритмом и над выражением (a < b & a > c) - в особенности.
Dasha DashaУченик (169) 10 лет назад
изменила до такого, в итоге ошибка одна и все та же : Console.Write("Среднее число= "+srchislo);
double a, b, c, srchislo;
Console.Write("Введите число a ");
a = Convert.ToDouble(Console.ReadLine());
Console.Write("Введите число b ");
b = Convert.ToDouble(Console.ReadLine());
Console.Write("Введите число c ");
c = Convert.ToDouble(Console.ReadLine());
if (a <= b & a >= c) srchislo = a;
else
{
if (b <= a && b >= c) srchislo = b;
else if (c <= a && c >= b) srchislo = c;
}
Jurijus Zaksas Искусственный Интеллект (473839) Алгоритм-то по сути не изменился. По-прежнему существует ситуация, при которой переменная может иметь произвольное значение.
Nedovypendr2 Perenychij2 Мастер (1953) 10 лет назад
чтоб убрать ошибку надо прописать еще 2 if/else и 1 else (+&->&&). может для простоты стоит сделать нечто вроде srchislo =
a > b && c > a || a > c && b > a? a :
b > c && a > b || b > a && c > b? b :
c;
или Math.Min(Math.Min(Math.Max(a,b),Math.Max(a,c)),Math.Max(b,c));
Похожие вопросы