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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.05.2019, 16: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 в 18:17.
meravera вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите с поиском 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