Ругается, что не все ветви кода возвращают значения, как поправить? - 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 элемента работает корректно");
- }
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д