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

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

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

Листинг программы
  1. public static int BinarySearch(int[] array, int value)
  2. {
  3. int low = 0;
  4. int high = array.Length - 1;
  5. if (array == null)
  6. throw new ArgumentNullException();
  7. if (array.Length == 0)
  8. return -1;
  9. if (array[low] > value)
  10. return -1;
  11. if (array[high] < value)
  12. return -1;
  13. while (low < high)
  14. {
  15. var ind = (low + high) / 2;
  16. var middle = array[(low + high) / 2];
  17. if (middle > value)
  18. {
  19. high = ind;
  20. }
  21. else
  22. {
  23. low = ind;
  24. }
  25. }
  26. if (array[low] == value)
  27. return low;
  28. }
  29. static void Main(string[] args)
  30. {
  31. TestOneNumber();
  32. TestNegativeNumbers();
  33. TestNonExistentElement();
  34. TestRepeatNumbers();
  35. TestEmptyNumbers();
  36. TestVastNumbers();
  37. Console.ReadKey();
  38. }
  39. private static void TestOneNumber()
  40. {
  41. //Тестирование поиска одного элемента
  42. int[] oneNumber = new[] { 5, 4, 3, 2, 1 };
  43. if (BinarySearch(oneNumber, 3) != 2)
  44. Console.WriteLine("! Поиск не нашёл число 3 среди чисел {5, 4, 3, 2, 1}");
  45. else
  46. Console.WriteLine("Поиск одного элемента работает корректно");
  47. }
  48. private static void TestNegativeNumbers()
  49. {
  50. //Тестирование поиска в отрицательных числах
  51. int[] negativeNumbers = new[] { -5, -4, -3, -2 };
  52. if (BinarySearch(negativeNumbers, -3) != 2)
  53. Console.WriteLine("! Поиск не нашёл число -3 среди чисел {-5, -4, -3, -2}");
  54. else
  55. Console.WriteLine("Поиск среди отрицательных чисел работает корректно");
  56. }
  57. private static void TestNonExistentElement()
  58. {
  59. //Тестирование поиска отсутствующего элемента
  60. int[] negativeNumbers = new[] { -5, -4, -3, -2 };
  61. if (BinarySearch(negativeNumbers, -1) >= 0)
  62. Console.WriteLine("! Поиск нашёл число -1 среди чисел {-5, -4, -3, -2}");
  63. else
  64. Console.WriteLine("Поиск отсутствующего элемента работает корректно");
  65. }
  66. private static void TestRepeatNumbers()
  67. {
  68. //Тестирование поиска элемента, повторяющегося несколько раз
  69. int[] repeatNumbers = new[] { 5, 5, 1, 5, 5 };
  70. var ind = BinarySearch(repeatNumbers, 5);
  71. if (repeatNumbers[ind] != 1)
  72. Console.WriteLine("! Поиск нашёл число 5 среди чисел {5, 5, 1, 5, 5}");
  73. else
  74. Console.WriteLine("Поиск среди элементов, повторяющихся несколько раз работает корректно");
  75. }
  76. private static void TestEmptyNumbers()
  77. {
  78. //Тестирование поиска элемента в пустом массиве
  79. int[] emptyNumbers = new int[] { };
  80. if (BinarySearch(emptyNumbers, 5) != -1)
  81. Console.WriteLine("! Поиск нашёл число 5 среди чисел {}");
  82. else
  83. Console.WriteLine("Поиск элементов в пустом массиве работает корректно");
  84. }
  85. private static void TestVastNumbers()
  86. {
  87. //Тестирование поиска элемента в массиве из 1001 элемента
  88. int[] vastNumbers = new int[100001];
  89. for (int i = 0; i < 100001; i++)
  90. {
  91. vastNumbers[i] = i - 10;
  92. }
  93. for (int i = 0; i < 100001; i++)
  94. {
  95. var ind = BinarySearch(vastNumbers, i);
  96. if (vastNumbers[ind] != i)
  97. Console.WriteLine("! Поиск не нашёл число i среди 100001 элементов");
  98. else
  99. Console.WriteLine("Поиск элементов в массиве из 100001 элемента работает корректно");
  100. }
  101. }
  102. }
  103. }

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

textual
Листинг программы
  1. using System;
  2.  
  3. internal class Program
  4. {
  5.     public static int BinarySearch(int[] array, int value)
  6.     {
  7.         var low = 0;
  8.         var high = array.Length - 1;
  9.  
  10.         if (array == null)
  11.             throw new ArgumentNullException();
  12.  
  13.         if (array.Length == 0)
  14.             return -1;
  15.  
  16.         if (array[low] > value)
  17.             return -1;
  18.  
  19.         if (array[high] < value)
  20.             return -1;
  21.  
  22.         while (low < high)
  23.         {
  24.             var ind = (low + high) / 2;
  25.             var middle = array[(low + high) / 2];
  26.             if (middle > value)
  27.                 high = ind;
  28.             else
  29.                 low = ind;
  30.         }
  31.         if (array[low] == value)
  32.             return low;
  33.  
  34.         throw new NotImplementedException();
  35.     }
  36.  
  37.     private static void Main(string[] args)
  38.     {
  39.         TestOneNumber();
  40.         TestNegativeNumbers();
  41.         TestNonExistentElement();
  42.         TestRepeatNumbers();
  43.         TestEmptyNumbers();
  44.         TestVastNumbers();
  45.  
  46.         Console.ReadKey();
  47.     }
  48.  
  49.     private static void TestOneNumber()
  50.     {
  51.         //Тестирование поиска одного элемента
  52.         int[] oneNumber = {5, 4, 3, 2, 1};
  53.         if (BinarySearch(oneNumber, 3) != 2)
  54.             Console.WriteLine("! Поиск не нашёл число 3 среди чисел {5, 4, 3, 2, 1}");
  55.         else
  56.             Console.WriteLine("Поиск одного элемента работает корректно");
  57.     }
  58.  
  59.     private static void TestNegativeNumbers()
  60.     {
  61.         //Тестирование поиска в отрицательных числах
  62.         int[] negativeNumbers = {-5, -4, -3, -2};
  63.         if (BinarySearch(negativeNumbers, -3) != 2)
  64.             Console.WriteLine("! Поиск не нашёл число -3 среди чисел {-5, -4, -3, -2}");
  65.         else
  66.             Console.WriteLine("Поиск среди отрицательных чисел работает корректно");
  67.     }
  68.  
  69.     private static void TestNonExistentElement()
  70.     {
  71.         //Тестирование поиска отсутствующего элемента
  72.         int[] negativeNumbers = {-5, -4, -3, -2};
  73.         if (BinarySearch(negativeNumbers, -1) >= 0)
  74.             Console.WriteLine("! Поиск нашёл число -1 среди чисел {-5, -4, -3, -2}");
  75.         else
  76.             Console.WriteLine("Поиск отсутствующего элемента работает корректно");
  77.     }
  78.  
  79.     private static void TestRepeatNumbers()
  80.     {
  81.         //Тестирование поиска элемента, повторяющегося несколько раз
  82.         int[] repeatNumbers = {5, 5, 1, 5, 5};
  83.         var ind = BinarySearch(repeatNumbers, 5);
  84.         if (repeatNumbers[ind] != 1)
  85.             Console.WriteLine("! Поиск нашёл число 5 среди чисел {5, 5, 1, 5, 5}");
  86.         else
  87.             Console.WriteLine("Поиск среди элементов, повторяющихся несколько раз работает корректно");
  88.     }
  89.  
  90.     private static void TestEmptyNumbers()
  91.     {
  92.         //Тестирование поиска элемента в пустом массиве
  93.         int[] emptyNumbers = {};
  94.         if (BinarySearch(emptyNumbers, 5) != -1)
  95.             Console.WriteLine("! Поиск нашёл число 5 среди чисел {}");
  96.         else
  97.             Console.WriteLine("Поиск элементов в пустом массиве работает корректно");
  98.     }
  99.  
  100.     private static void TestVastNumbers()
  101.     {
  102.         //Тестирование поиска элемента в массиве из 1001 элемента
  103.         var vastNumbers = new int[100001];
  104.         for (var i = 0; i < 100001; i++)
  105.             vastNumbers[i] = i - 10;
  106.         for (var i = 0; i < 100001; i++)
  107.         {
  108.             var ind = BinarySearch(vastNumbers, i);
  109.             if (vastNumbers[ind] != i)
  110.                 Console.WriteLine("! Поиск не нашёл число i среди 100001 элементов");
  111.             else
  112.                 Console.WriteLine("Поиск элементов в массиве из 100001 элемента работает корректно");
  113.         }
  114.     }
  115. }

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


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

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

7   голосов , оценка 3.857 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы