Поиск, использующий мультипликативный критерий - 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; // И дальше это значение только увеличивается
}

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


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

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

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