Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.10.2017, 19:48   #1
Andry95
Пользователь
 
Регистрация: 01.03.2016
Сообщений: 24
По умолчанию Реализация интерполяционного поиска

Добрый день!
Пробовал реализовать интерполяционный поиск на с#
Но какой бы элемент не ввел, то ответ будет, что "Поиск не успешен".
Может я что-то перепутал с формулами?
Заранее благодарен за ответ!
Код:
static void Main(string[] args)
        {
            int[] a = new int[100];
            Console.WriteLine("Колличество элементов в массиве?");
            string s = Console.ReadLine();
            int x = Int32.Parse(s);
            Console.WriteLine("-----------------------");
            Console.WriteLine(" Введите элементы массива через Enter ");
            Console.WriteLine("-----------------------");
            for (int i = 0; i < x; i++)
            {
                string s1 = Console.ReadLine();
                a[i] = Int32.Parse(s1);
            }
            Console.WriteLine("--------------------");
            Console.WriteLine(" Введите искомый элемент");
            Console.WriteLine("--------------------");
            string s3 = Console.ReadLine();
            int x2 = Int32.Parse(s3);
            int low = 0;
            int high = x - 1;
            int toFind = 0;
            while (a[low] < toFind && a[high] > toFind)
            {
                int mid = low + ((toFind - a[low]) * (high - low)) / (a[high] - a[low]);
                if (a[mid] < toFind)
                    low = mid + 1;
                else if (a[mid] > toFind)
                    high = mid - 1;
                else if (x2 == a[mid])
                {
                    Console.WriteLine("-----------------");
                    Console.WriteLine("Поиск успешен");
                    Console.WriteLine("-----------------");
                    Console.WriteLine("Элемент {0} найден на позиции {1}\n", x2, mid + 1);
                    Console.ReadKey();
                    return;
 
                }
            }
            Console.WriteLine("Поиск не успешен");
            Console.ReadKey();
 
        }
Andry95 вне форума Ответить с цитированием
Старый 08.10.2017, 21:18   #2
Andry95
Пользователь
 
Регистрация: 01.03.2016
Сообщений: 24
По умолчанию

Код:
Console.WriteLine("Колличество элементов в массиве?");
            string s = Console.ReadLine();
            int x = Int32.Parse(s);
            int[] a = new int[x];
            Console.WriteLine("-----------------------");
            Console.WriteLine(" Введите элементы массива через Enter ");
            Console.WriteLine("-----------------------");
            for (int i = 0; i < x; i++)
            {
                string s1 = Console.ReadLine();
                a[i] = Int32.Parse(s1);
            }
            Console.WriteLine("--------------------");
            Console.WriteLine(" Введите искомый элемент");
            Console.WriteLine("--------------------");
            string s3 = Console.ReadLine();
            
            int low = 0;
            int mid;
            int high = x - 1;
            int toFind = Int32.Parse(s3);
            //int toFind = 0;
            while (a[low] < toFind && a[high] > toFind)
            {
                mid = low + ((toFind - a[low]) * (high - low)) / (a[high] - a[low]);
                if (a[mid] < toFind)
                    low = mid + 1;
                else if (a[mid] > toFind)
                    high = mid - 1;
                else if (toFind == a[mid])
                {
                    Console.WriteLine("-----------------");
                    Console.WriteLine("Поиск успешен");
                    Console.WriteLine("-----------------");
                    Console.WriteLine("Элемент {0} найден на позиции {1}\n", toFind, mid + 1);
                    Console.ReadKey();
                    return;
 
                }
            }
            Console.WriteLine("Поиск не успешен");
            Console.ReadKey();
ответ не конечный, но некоторые моменты исправлны
Andry95 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Реализация линейного поиска на Java sswt Помощь студентам 4 02.09.2015 15:03
Реализовать поиск двух и более значений методом следящего интерполяционного поиска. Кирилл778 Помощь студентам 0 27.06.2013 19:55
Реализация функций поиска MaxMad Помощь студентам 0 04.12.2010 15:16
Реализация метода поиска неисправности =\ Minton87 Помощь студентам 0 27.12.2009 20:13
Реализация поиска ADO+Access Artazzz БД в Delphi 5 13.10.2008 18:52