Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > C++ > Visual C++
Регистрация

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

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Ответ
 
Опции темы
Старый 03.05.2019, 17:47   #1
meravera
Новичок
Джуниор
 
Регистрация: 03.05.2019
Сообщений: 1
По умолчанию Помогите пожалуста с интерполирующим поиском

есть код, (стандартный интерполирующий поиск) для нахождения первого вхождения нужного элемента в массив, а я никак немогу преврать его в ищейу
всех вхождений этого элемента

Код:
int main()
{
//Массив значений в котором пойдет поиск
int MyArray[] { 1, 2, 4, 6, 7, 89, 123, 231, 1000, 1235 };

int x = 0; //Текущая позиция массива, с которым сравнивается искомое
int a = 0; //Левая граница области, где ведется поиск
int b = 9; //Правая граница области, где ведется поиск

int WhatFind = 123; //Значение, которое нужно найти
bool found; //Переменка-флаг, принимающая True если искомое найдено

/************ Начало интерполяции *******************************/

//Цикл поиска по массиву, пока искомое не найдено 
//или пределы поиска еще существуют
for (found = false; (MyArray[a] < WhatFind) && (MyArray[b] > WhatFind) && !found; )
{
//Вычисление интерполяцией следующего элемента, который будет сравниваться с искомым
x = a + ((WhatFind - MyArray[a]) * (b - a)) / (MyArray[b] - MyArray[a]);
//Получение новых границ области, если искомое не найдено
if (MyArray[x] < WhatFind) 
a = x + 1;
else if (MyArray[x] > WhatFind) 
b = x - 1;
else
found = true;
}

/************** Конец интерполяции ***************************/

//Если искомое найдено на границах области поиска, показать на какой границе оно
if (MyArray[a] == WhatFind) 
cout << WhatFind << " founded in element " << a << endl;
else if (MyArray[b] == WhatFind) 
cout << WhatFind << " founded in element " << b << endl;
else
cout << "Sorry. Not found" << endl; 

return 0;
}


_____
Код программы нужно выделять (форматировать) тегами [CODE] [/CODE] (читать FAQ)
Модератор

Последний раз редактировалось Serge_Bliznykov; 03.05.2019 в 19:17.
meravera вне форума Ответить с цитированием
Ответ
Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите с поиском Protuberanez Microsoft Office Access 6 14.01.2014 15:05
Помогите с поиском Bestmachin БД в Delphi 9 12.06.2009 22:17
Помогите с поиском EugenZyr Помощь студентам 1 07.05.2008 14:02
Помогите с поиском 1234 БД в Delphi 5 01.04.2008 11:33
Помогите с поиском Egych PHP 1 09.08.2007 08:00