Поиск, использующий мультипликативный критерий - C#
Формулировка задачи:
Доброе время суток! Подскажите, почему первый элемент никогда не находится?
static void Main() { int m, n; Console.WriteLine("Please enter array size"); n = Convert.ToInt32(Console.ReadLine()); Random rnd = new Random(); int[] a = new int[n + 4]; for (int i = 0; i < n; i++) Console.Write("{0,4}", a[i] = rnd.Next(100, 1001)); Console.WriteLine("Please enter Key to find in unsorted array"); m = Convert.ToInt32(Console.ReadLine()); // Unsorted array value search multiplication int ii = 4; a[n + 1] = m; int cycles = 1; while ((a[ii - 3] - m) * (a[ii - 2] - m) * (a[ii - 1] - m) * (a[ii] - m) != 0) { cycles++; if (a[ii - 3] == m) { ii = ii - 3; break; } else if (a[ii - 2] == m) { ii = ii - 2; break; } else if ((a[ii - 1] == m)) { ii = ii - 1; break; } ii = ii + 4; } if (ii < n + 1) { Console.WriteLine("Value " + m + " is found. Total cycles: " + cycles); } else { Console.WriteLine("Not found"); } }
Решение задачи: «Поиск, использующий мультипликативный критерий»
textual
Листинг программы
int ii = 4; // Потому, что 4 a[n + 1] = m; int cycles = 1; while ((a[ii - 3] - m) // минус 3, очевидно, равно единице, не нулю * (a[ii - 2] - m) * (a[ii - 1] - m) * (a[ii] - m) != 0) { cycles++; if (a[ii - 3] == m) { ii = ii - 3; break; } else if (a[ii - 2] == m) { ii = ii - 2; break; } else if ((a[ii - 1] == m)) { ii = ii - 1; break; } ii = ii + 4; // И дальше это значение только увеличивается }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д