Метод должен возвращать только среднее (медиану) значение из 3 чисел, т. е отбрасывать максимальное и минмальное, а он всегда возвращает переменную "c". Как быть? Спасибо за ответы. Вот здесь код:
public static void Main()
{
Console.WriteLine(MiddleOf(5, 0, 100)); // => 5
Console.WriteLine(MiddleOf(12, 12, 11)); // => 12
Console.WriteLine(MiddleOf(2, 3, 2)); // => 2
Console.WriteLine(MiddleOf(8, 8, 8)); // => 8
Console.WriteLine(MiddleOf(5, 0, 1)); // => 1
Console.ReadKey();
}
public static int MiddleOf(int a, int b, int c)
{
if ((a > b) && (b > c)) return b;
else if ((a > c) && (b > a)) return a;
else return c;
}
Можно делать через сравнения. Но в этом случае нужно будет проверять кучу условий. Да и запутаться очень легко. Но есть простой способ. Нужно отсортировать данные и взять средний элемент. Можно конечно использовать стандартный sort, но думаю, для трех элементов это будет перебор - поэтому отсортируем ручками (три сравнения, быстрее все равно не выйдет).
using System;
public class Test
{
public static void Main()
{
Console.WriteLine(MiddleOf(5, 0, 100)); // => 5
Console.WriteLine(MiddleOf(12, 12, 11)); // => 12
Console.WriteLine(MiddleOf(2, 3, 2)); // => 2
Console.WriteLine(MiddleOf(8, 8, 8)); // => 8
Console.WriteLine(MiddleOf(5, 0, 1)); // => 1
Console.ReadKey();
}
static void Swap<T>(ref T lhs, ref T rhs)
{
T temp;
temp = lhs;
lhs = rhs;
rhs = temp;
}
public static int MiddleOf(int a, int b, int c)
{
if (a > b) Swap<int>(ref a, ref b);
if (a > c) Swap<int>(ref a, ref c);
if (b > c) Swap<int>(ref b, ref c);
return b;
}
}
using System;
namespace projectvisualstudio_test_stack_over
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine(MiddleOf(5, 0, 100)); // => 5
Console.WriteLine(MiddleOf(12, 12, 11)); // => 12
Console.WriteLine(MiddleOf(2, 3, 2)); // => 2
Console.WriteLine(MiddleOf(8, 8, 8)); // => 8
Console.WriteLine(MiddleOf(5, 0, 1)); // => 1
Console.WriteLine("-"); // =>
Console.WriteLine(MiddleOf(1, 2, 3)); // => 2
Console.WriteLine(MiddleOf(1, 3, 2)); // => 2
Console.WriteLine(MiddleOf(2, 1, 3)); // => 2
Console.WriteLine(MiddleOf(2, 3, 1)); // => 2
Console.WriteLine(MiddleOf(3, 1, 2)); // => 2
Console.WriteLine(MiddleOf(3, 2, 1)); // => 2
Console.ReadKey();
}
public static int MiddleOf(int a, int b, int c)
{
if (a < b)
{
if (b < c)
{
return b;
}
else if (a > c)
{
return a;
}
else return c;
}
else if (a > b)
{
if (a < c)
{
return a;
}
else if(b > c)
{
return b;
}
else return c;
}
else return a;
}
}
}
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости