Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/25: Рейтинг темы: голосов - 25, средняя оценка - 4.56
1 / 5 / 0
Регистрация: 16.10.2017
Сообщений: 170
1

Бинарный поиск: определить индекс самого левого вхождения числа Х в исходный набор

27.10.2017, 16:19. Показов 4998. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
дано целое число Х и текстовый файл с именем FileName. В файле записан ряд целых чисел, расположенных по неубыванию. С помощью бинарного поиска определить индекс самого левого вхождения числа Х в исходный набор. Нумерация элементов начинается с нуля. Если элемент не найден вывести -1. Чисел в наборе не более 200.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.10.2017, 16:19
Ответы с готовыми решениями:

Определить номер самого левого столбца матрицы, содержащего только положительные элементы
Написать функцию, которая в матрице размером m * n определяет номер самого левого столбца,...

Поиск подстроки в строке и индекс первого вхождения
Доброго времени суток! Как осуществляется поиск подстроки? Весь день пытался придумать, облазил...

(C) Дан бинарный файл, содержащий прямоугольники(координаты левого верхнего и правого нижнего угла–целые числа типа int)
Дан файл, содержащий прямоугольники (координаты левого верхнего и правого нижнего угла – целые...

определить позицию самого правого вхождения в заданную строку
помогите решить задачу: Составить процедуру, позволяющую определить позицию самого правого...

3
Wanna be serious
586 / 473 / 186
Регистрация: 31.07.2013
Сообщений: 1,693
28.10.2017, 09:54 2
В вашем случае, необходимо сначала считать данные из файла, и записать их в массив. После того как решите
эту проблему, можете приступать к реализации процедуры бинарного поиска, что не должно привести к каким-то
затруднениям, ибо информации по бинарному поиску в интернете море.

Для примера можете посмотреть один из вариантов реализации Binary Search в Википедии, там довольно просто
все изложено.
0
838 / 641 / 940
Регистрация: 26.06.2015
Сообщений: 1,409
28.10.2017, 17:57 3
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
#include <iostream>
#include <fstream>
#include <sstream>
#include <vector>
#include <iterator>
 
int bin_find(std::istream& _in, int x){
    std::vector<int> vs;
    std::copy(std::istream_iterator<int>(_in), std::istream_iterator<int>(), std::back_inserter(vs));
 
    if(vs.empty() || (x < vs[0]) || (x > vs[vs.size() - 1]))
        return -1;
 
    std::vector<int>::size_type a, b, m;
    a = 0;
    b = vs.size();
    while(a < b){
        m = a + (b - a) / 2;
        if(x < vs[m])
            b = m;
        else if(x > vs[m])
            a = m + 1;
        else {
            while((m > 0) && (vs[m] == x))
                --m;
 
            if(vs[m] != x)
                ++m;
            return static_cast<int>(m);
        }
    }
    return -1;
}
 
int main(void){
    int i, X = 3;
    //для примера поиск в строке
    char s[] = "0 1 2 3 3 3 3 5";
    std::istringstream sp(s);
    if((i = bin_find(sp, X)) != -1)
        std::cout << "index: " << i << std::endl;
 
    //поиск в файле
    std::ifstream fp("file.txt");
    if((i = bin_find(fp, X)) != -1)
        std::cout << "index: " << i << std::endl;
    fp.close();
    std::cin.get();
    return 0;
}
0
672 / 475 / 215
Регистрация: 06.09.2013
Сообщений: 1,306
28.10.2017, 18:19 4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
int bin_search(int *arr, int low, int high, int x) {
    while(high - low > 1) {
        int mid = low + (high - low) / 2;
        if(x <= arr[mid]) {
            high = mid;
        } else if(x > arr[mid]) {
            low = mid;
        }
    }
    if(arr[low] == x) return low;
    if(arr[high] == x) return high;
    return -1;
}
1
28.10.2017, 18:19
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.10.2017, 18:19
Помогаю со студенческими работами здесь

Определить позицию самого правого вхождения символа в строку
Составить процедуру, позволяющую определить позицию самого первого вхождения заданного символа в...

Определить позицию самого правого вхождения заданного символа в строку
Здраствуйте! Помогите пожалуйста решить задачи. Проблема с процедурами, не могу понять их....

Найти индекс первого вхождения максимального числа
6. Дана линейная таблица размерности N, нумерация элементов начинается с 1. Найти индекс первого...

Определить позицию самого правого вхождения заданного символа в исходную строку
Помогите пожалуйста Составить функцию, позволяющую определить позицию самого правого вхождения...

Определить индекс начала вхождения одной последовательности в другую
Есть задача Определить индекс начала вхождения одной последовательности в другую Написал алгоритм...

Процедура: определить позицию самого правого вхождения заданного символа в исходную строку
Задание: Составить процедуру, позволяющую определить позицию самого правого вхождения заданного...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru