Поиск, использующий мультипликативный критерий - C#

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

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

Доброе время суток! Подскажите, почему первый элемент никогда не находится?
Листинг программы
  1. static void Main()
  2. {
  3. int m, n;
  4. Console.WriteLine("Please enter array size");
  5. n = Convert.ToInt32(Console.ReadLine());
  6. Random rnd = new Random();
  7. int[] a = new int[n + 4];
  8. for (int i = 0; i < n; i++)
  9. Console.Write("{0,4}", a[i] = rnd.Next(100, 1001));
  10. Console.WriteLine("Please enter Key to find in unsorted array");
  11. m = Convert.ToInt32(Console.ReadLine());
  12. // Unsorted array value search multiplication
  13. int ii = 4;
  14. a[n + 1] = m;
  15. int cycles = 1;
  16. while ((a[ii - 3] - m) * (a[ii - 2] - m) * (a[ii - 1] - m) * (a[ii] - m) != 0)
  17. {
  18. cycles++;
  19. if (a[ii - 3] == m)
  20. {
  21. ii = ii - 3;
  22. break;
  23. }
  24. else if (a[ii - 2] == m)
  25. {
  26. ii = ii - 2;
  27. break;
  28. }
  29. else if ((a[ii - 1] == m))
  30. {
  31. ii = ii - 1;
  32. break;
  33. }
  34. ii = ii + 4;
  35. }
  36. if (ii < n + 1)
  37. {
  38. Console.WriteLine("Value " + m + " is found. Total cycles: " + cycles);
  39. }
  40. else
  41. {
  42. Console.WriteLine("Not found");
  43. }
  44. }

Решение задачи: «Поиск, использующий мультипликативный критерий»

textual
Листинг программы
  1. int ii = 4; // Потому, что 4
  2. a[n + 1] = m;
  3. int cycles = 1;
  4. while ((a[ii - 3] - m) // минус 3, очевидно, равно единице, не нулю
  5.   * (a[ii - 2] - m) * (a[ii - 1] - m) * (a[ii] - m) != 0)
  6. {
  7.     cycles++;
  8.     if (a[ii - 3] == m)
  9.     {
  10.         ii = ii - 3;
  11.         break;
  12.     }
  13.     else if (a[ii - 2] == m)
  14.     {
  15.         ii = ii - 2;
  16.         break;
  17.     }
  18.     else if ((a[ii - 1] == m))
  19.     {
  20.         ii = ii - 1;
  21.         break;
  22.     }
  23.  
  24.     ii = ii + 4; // И дальше это значение только увеличивается
  25. }

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


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

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

10   голосов , оценка 3.9 из 5

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

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

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