Форум программистов, компьютерный форум, киберфорум
Наши страницы

Интерполяционный поиск - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Определите, есть ли в данной строке указанное слово(код написан) http://www.cyberforum.ru/cpp-beginners/thread605808.html
подскажите, что не хватает в программе? очень надо, исправьте кому несложно. #include <iostream> #include <algorithm> #include <string> int main() { std::string s = "Определите есть...
C++ Реализовать пример С++ Проекта, состоящего из библиотеки и исполняемого модуля Помогите пожалуйста разобраться с заданием. Оно звучит вот так. -------------------------------------------------------------------- На основе системы сборки Scons (http://Scons.org/) реализовать... http://www.cyberforum.ru/cpp-beginners/thread605804.html
Число "0" не записывается в файл C++
Из-за того что в файле нет числа "0" программа работает не правильно. Как сделать так, чтобы в файле появился "0" //---------------------------------------------------------------------------...
Объясните выражение C++
пример: x=4 y=5 z=4 x=z++&(x!=4) объясните,пжлста, чему x здесь равен
C++ Объясните, что требуется в задании http://www.cyberforum.ru/cpp-beginners/thread605760.html
Всем привет! Помогите пожалуйста понять, что требуется сделать в задании: реализовать инкапсулирующий поток выполнения абстрактный полиморфный класс Thread, где конкретное поведение задаётся...
C++ Зачем нужны модификаторы типов? Читаю Шилдта и все более менее понятно,но насчет unsigned , signed , shot , long что то вообще дыра в понимании и их пропускал,а потом пришлось вернутся.Наверно это из-за того,что для меня не понятны... подробнее

Показать сообщение отдельно
David Sylva
1290 / 952 / 51
Регистрация: 17.05.2012
Сообщений: 2,687
14.06.2012, 19:47
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
#include <iostream>
#include <iomanip>
//прототипы функций
int interpolatingSearch (int[], int, int);
void printArray (int[], int);
using namespace std;
int main()
{
//резервируем память для переменных
const int size = 18;
int array[size] = {2,5,8,12,23,35,36,41,52,54,55,57,63,67,81,83,87,91};
int key, result;
//запрашиваем и сохраняем ключ поиска
cout << "Enter a key of search: ";
cin >> key;
//печатаем массив
printArray (array, size);
//вызываем функцию интерполирующего поиска
//сохраняем, возвращенное ею значение, в переменную result
result = interpolatingSearch (array, size, key);
if (result != -1)
//значение найдено - выводим его индекс
cout << "Value is found in an element with an index " << result << endl;
else
//значение не найдено
cout << "Value is not found" << endl;
return 0;
}
//функция, выполняющая интерполирующий поиск
//в качесте аргументов принимает массив, размер массива и ключ поиска
int interpolatingSearch (int a[], int arraySize, int keyOfSearch)
{
//объявляем необходимые локальные переменные
//изначально устанавливаем нижний индекс на начало массива,
//а верний на конец массива
int low = 0;
int high = arraySize - 1;
int mid;
//цикл интерполирующего поиска
while (a[low] < keyOfSearch && a[high] >= keyOfSearch)
{
//интерполирующий поиск производит оценку новой области поиска
//по расстоянию между ключом поиска и текущим значение элемента
mid = low + ((keyOfSearch - a[low]) * (high - low)) / (a[high] - a[low]);
//если значение в ячейке с индексом mid меньше, то смещаем нижнюю границу
if (a[mid] < keyOfSearch)
low = mid + 1;
//в случае, если значение больше, то смещаем верхнюю границу
else if (a[mid] > keyOfSearch)
high = mid - 1;
//если равны, то возвращаем индекс
else
return mid;
}
//если цикл while не вернул индекс искомого значения,
//то проверяем не находится ли оно в ячейке массива с индексом low,
//иначе возвращаем -1 (значение не найдено)
if (a[low] == keyOfSearch)
return low;
else
return -1;
}
//функция, печатающая массив
void printArray (int b[], int sizeOfArray)
{
cout << "Indexes: " << endl;
for (int i = 0; i < sizeOfArray; i++)
cout << setw(4) << i;
cout << endl;
for (int i = 0; i < sizeOfArray; i++)
cout << "----";
cout << endl;
for (int i = 0; i < sizeOfArray; i++)
cout << setw(4) << b[i];
cout << endl << endl;
}
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru