Ругается, что не все ветви кода возвращают значения, как поправить? - C#

Узнай цену своей работы

Формулировка задачи:

 public static int BinarySearch(int[] array, int value)
        {
            int low = 0;
            int high = array.Length - 1;
 
            if (array == null)
                throw new ArgumentNullException();
 
            if (array.Length == 0)
                return -1;
 
            if (array[low] > value)
                return -1;
 
            if (array[high] < value)
                return -1;
 
            while (low < high)
            {
                var ind = (low + high) / 2;
                var middle = array[(low + high) / 2];
                if (middle > value)
                {
                    high = ind;
                }
                else
                {
                    low = ind;
                }
            }
            if (array[low] == value)
                return low;
        }
 
        static void Main(string[] args)
        {
            TestOneNumber();
            TestNegativeNumbers();
            TestNonExistentElement();
            TestRepeatNumbers();
            TestEmptyNumbers();
            TestVastNumbers();
 
            Console.ReadKey();
        }
 
        private static void TestOneNumber()
        {
            //Тестирование поиска одного элемента
            int[] oneNumber = new[] { 5, 4, 3, 2, 1 };
            if (BinarySearch(oneNumber, 3) != 2)
                Console.WriteLine("! Поиск не нашёл число 3 среди чисел {5, 4, 3, 2, 1}");
            else
                Console.WriteLine("Поиск одного элемента работает корректно");
        }
 
        private static void TestNegativeNumbers()
        {
            //Тестирование поиска в отрицательных числах
            int[] negativeNumbers = new[] { -5, -4, -3, -2 };
            if (BinarySearch(negativeNumbers, -3) != 2)
                Console.WriteLine("! Поиск не нашёл число -3 среди чисел {-5, -4, -3, -2}");
            else
                Console.WriteLine("Поиск среди отрицательных чисел работает корректно");
        }
        private static void TestNonExistentElement()
        {
            //Тестирование поиска отсутствующего элемента
            int[] negativeNumbers = new[] { -5, -4, -3, -2 };
            if (BinarySearch(negativeNumbers, -1) >= 0)
                Console.WriteLine("! Поиск нашёл число -1 среди чисел {-5, -4, -3, -2}");
            else
                Console.WriteLine("Поиск отсутствующего элемента работает корректно");
        }
 
        private static void TestRepeatNumbers()
        {
            //Тестирование поиска элемента, повторяющегося несколько раз
            int[] repeatNumbers = new[] { 5, 5, 1, 5, 5 };
            var ind = BinarySearch(repeatNumbers, 5);
            if (repeatNumbers[ind] != 1)
                Console.WriteLine("! Поиск нашёл число 5 среди чисел {5, 5, 1, 5, 5}");
            else
                Console.WriteLine("Поиск среди элементов, повторяющихся несколько раз работает корректно");
        }
 
        private static void TestEmptyNumbers()
        {
            //Тестирование поиска элемента в пустом массиве 
            int[] emptyNumbers = new int[] { };
            if (BinarySearch(emptyNumbers, 5) != -1)
                Console.WriteLine("! Поиск нашёл число 5 среди чисел {}");
            else
                Console.WriteLine("Поиск элементов в пустом массиве работает корректно");
        }
 
        private static void TestVastNumbers()
        {
            //Тестирование поиска элемента в массиве из 1001 элемента 
            int[] vastNumbers = new int[100001];
            for (int i = 0; i < 100001; i++)
            {
                vastNumbers[i] = i - 10;
            }
            for (int i = 0; i < 100001; i++)
            {
                var ind = BinarySearch(vastNumbers, i);
                if (vastNumbers[ind] != i)
                    Console.WriteLine("! Поиск не нашёл число i среди 100001 элементов");
                else
                    Console.WriteLine("Поиск элементов в массиве из 100001 элемента работает корректно");
            }
        }
    }
}

Решение задачи: «Ругается, что не все ветви кода возвращают значения, как поправить?»

textual
Листинг программы
using System;
 
internal class Program
{
    public static int BinarySearch(int[] array, int value)
    {
        var low = 0;
        var high = array.Length - 1;
 
        if (array == null)
            throw new ArgumentNullException();
 
        if (array.Length == 0)
            return -1;
 
        if (array[low] > value)
            return -1;
 
        if (array[high] < value)
            return -1;
 
        while (low < high)
        {
            var ind = (low + high) / 2;
            var middle = array[(low + high) / 2];
            if (middle > value)
                high = ind;
            else
                low = ind;
        }
        if (array[low] == value)
            return low;
 
        throw new NotImplementedException();
    }
 
    private static void Main(string[] args)
    {
        TestOneNumber();
        TestNegativeNumbers();
        TestNonExistentElement();
        TestRepeatNumbers();
        TestEmptyNumbers();
        TestVastNumbers();
 
        Console.ReadKey();
    }
 
    private static void TestOneNumber()
    {
        //Тестирование поиска одного элемента
        int[] oneNumber = {5, 4, 3, 2, 1};
        if (BinarySearch(oneNumber, 3) != 2)
            Console.WriteLine("! Поиск не нашёл число 3 среди чисел {5, 4, 3, 2, 1}");
        else
            Console.WriteLine("Поиск одного элемента работает корректно");
    }
 
    private static void TestNegativeNumbers()
    {
        //Тестирование поиска в отрицательных числах
        int[] negativeNumbers = {-5, -4, -3, -2};
        if (BinarySearch(negativeNumbers, -3) != 2)
            Console.WriteLine("! Поиск не нашёл число -3 среди чисел {-5, -4, -3, -2}");
        else
            Console.WriteLine("Поиск среди отрицательных чисел работает корректно");
    }
 
    private static void TestNonExistentElement()
    {
        //Тестирование поиска отсутствующего элемента
        int[] negativeNumbers = {-5, -4, -3, -2};
        if (BinarySearch(negativeNumbers, -1) >= 0)
            Console.WriteLine("! Поиск нашёл число -1 среди чисел {-5, -4, -3, -2}");
        else
            Console.WriteLine("Поиск отсутствующего элемента работает корректно");
    }
 
    private static void TestRepeatNumbers()
    {
        //Тестирование поиска элемента, повторяющегося несколько раз
        int[] repeatNumbers = {5, 5, 1, 5, 5};
        var ind = BinarySearch(repeatNumbers, 5);
        if (repeatNumbers[ind] != 1)
            Console.WriteLine("! Поиск нашёл число 5 среди чисел {5, 5, 1, 5, 5}");
        else
            Console.WriteLine("Поиск среди элементов, повторяющихся несколько раз работает корректно");
    }
 
    private static void TestEmptyNumbers()
    {
        //Тестирование поиска элемента в пустом массиве 
        int[] emptyNumbers = {};
        if (BinarySearch(emptyNumbers, 5) != -1)
            Console.WriteLine("! Поиск нашёл число 5 среди чисел {}");
        else
            Console.WriteLine("Поиск элементов в пустом массиве работает корректно");
    }
 
    private static void TestVastNumbers()
    {
        //Тестирование поиска элемента в массиве из 1001 элемента 
        var vastNumbers = new int[100001];
        for (var i = 0; i < 100001; i++)
            vastNumbers[i] = i - 10;
        for (var i = 0; i < 100001; i++)
        {
            var ind = BinarySearch(vastNumbers, i);
            if (vastNumbers[ind] != i)
                Console.WriteLine("! Поиск не нашёл число i среди 100001 элементов");
            else
                Console.WriteLine("Поиск элементов в массиве из 100001 элемента работает корректно");
        }
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 3.857 из 5
Похожие ответы