С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
 Аватар для Natusi4ek
1 / 1 / 0
Регистрация: 22.01.2010
Сообщений: 10

Поиск. Бинарный поиск

27.01.2010, 17:22. Показов 2014. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ребятушки, а это опять я
Задали индивидуальное задание " Бинарный поиск "
Препод сказал, сделать простейшую программку с методом бинарного поиска)

Я опять искала в инете, а там одна ересть, ни понятные фрагменты...
Может кто не будь, пример полной программы показать с коментарием строчек, что бы было понятно по русски, что где как обозначает

помогите пожалуйста а
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
27.01.2010, 17:22
Ответы с готовыми решениями:

Поиск числа в двумерном массиве (бинарный поиск)
Произвожу поиск элемента в массиве двумя способами: линейным(последовательным) поиском и бинарным(двоичным). Первый работает на ура. Второй...

Бинарный поиск
#include <iostream> #include <fstream> #include <algorithm> #include <string> #include <vector> using namespace std; ...

Бинарный поиск
Реализация на С++: int Search_Binary (int arr, int left, int right, int key) { int midd = 0; while (1) { midd = (left +...

12
Эксперт С++
 Аватар для odip
7176 / 3234 / 82
Регистрация: 17.06.2009
Сообщений: 14,164
27.01.2010, 18:40
http://codelab.ru/t/binsearch/cpp/#realizations
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
27.01.2010, 19:32
вот:
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
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <stdlib.h>
 
/* бинарный поиск */
    
int main(void){
    char *alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    char to_find;
    int head, middle, tail;
    
    printf("Enter some character from A to Z: ");
    if ( scanf("%c", &to_find) != 1 )
        exit(1);
    if ( ( to_find = toupper(to_find) ) < 'A' || to_find > 'Z' ){
        printf("Wrong character!\n");
        exit(1);
    }
    
    head = 0; 
    tail = strlen(alphabet) - 1;
    
    /* если буква первая или последняя */
    if ( alphabet[head] == to_find ){
        printf("'%c' is %d-th character in alphabet.\n", to_find, head + 1);
        exit(0);
    }
    if ( alphabet[tail] == to_find ){
        printf("'%c' is %d-th character in alphabet.\n", to_find, tail + 1);
        exit(0);
    }
    
    while ( ( middle = head + ( tail - head ) / 2 ) > head ){
        if ( alphabet[middle] == to_find ){
            printf("'%c' is %d-th character in alphabet.\n", to_find, middle + 1);
            exit(0);
        }
        else if ( alphabet[middle] < to_find )
            head = middle;
        else
            tail = middle;
    }
    
    printf("'%c' not found in alphabet!\n", to_find);
    exit(0);
}
1
 Аватар для Natusi4ek
1 / 1 / 0
Регистрация: 22.01.2010
Сообщений: 10
16.02.2010, 23:16  [ТС]
А у меня проблема, программа та работает, Выскакивает типа введите букву для поиска, я в вожу к примеру " С" и после тут же закрывается, а где и как нада что то дописать, что бы она показала результат и после дополнительного нажатия на ENTER она закрылась??????????
0
Эксперт JavaЭксперт С++
 Аватар для M128K145
8384 / 3617 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
16.02.2010, 23:21
https://www.cyberforum.ru/cpp-... 10807.html
0
 Аватар для Natusi4ek
1 / 1 / 0
Регистрация: 22.01.2010
Сообщений: 10
16.02.2010, 23:25  [ТС]
ни понятно ни чего ((((((((

кто не будь подскажите что дописать
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
16.02.2010, 23:33
Natusi4ek, самый простой способ - везде перед exit(0); вставить два раза подряд getchar(); - будет ждать, пока enter не нажмёте.
0
 Аватар для Natusi4ek
1 / 1 / 0
Регистрация: 22.01.2010
Сообщений: 10
16.02.2010, 23:36  [ТС]
Вставила 2 раза getchar();
getchar(); перед exit(0);

все ровно ни останавливается...... чиво делать Чебурашка)?
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
16.02.2010, 23:46
Natusi4ek, проверьте,
вот так
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
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <stdlib.h>
 
/* бинарный поиск */
        
int main(void){
        char *alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
        char to_find;
        int head, middle, tail;
        
        printf("Enter some character from A to Z: ");
        if ( scanf("%c", &to_find) != 1 )
                exit(1);
        if ( ( to_find = toupper(to_find) ) < 'A' || to_find > 'Z' ){
                printf("Wrong character!\n");
                getchar();
                getchar();
                exit(1);
        }
        
        head = 0; 
        tail = strlen(alphabet) - 1;
        
        /* если буква первая или последняя */
        if ( alphabet[head] == to_find ){
                printf("'%c' is %d-th character in alphabet.\n", to_find, head + 1);
                getchar();
                getchar();
                exit(0);
        }
        if ( alphabet[tail] == to_find ){
                printf("'%c' is %d-th character in alphabet.\n", to_find, tail + 1);
                getchar();
                getchar();
                exit(0);
        }
        
        while ( ( middle = head + ( tail - head ) / 2 ) > head ){
                if ( alphabet[middle] == to_find ){
                        printf("'%c' is %d-th character in alphabet.\n", to_find, middle + 1);
                        getchar();
                    getchar();
                        exit(0);
                }
                else if ( alphabet[middle] < to_find )
                        head = middle;
                else
                        tail = middle;
        }
        
        printf("'%c' not found in alphabet!\n", to_find);
        getchar();
        getchar();
        exit(0);
}
должно ждать, а не сразу закрываться.
А вообще консольные приложения лучше всего в консоли компилировать и в ней же запускать
1
 Аватар для Natusi4ek
1 / 1 / 0
Регистрация: 22.01.2010
Сообщений: 10
16.02.2010, 23:48  [ТС]
Ураааааааааааа...
0
Эксперт JavaЭксперт С++
 Аватар для M128K145
8384 / 3617 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
16.02.2010, 23:50
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
#include "stdafx.h"
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <stdlib.h>
 
int main()
{
    char *alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    char to_find;
 
    int head, middle, tail;
 
 
    printf("Enter some character from A to Z: ");
    if ( scanf("%c", &to_find) != 1 )
        goto end;
    if ( ( to_find = toupper(to_find) ) < 'A' || to_find > 'Z' ){
        printf("Wrong character!\n");
        goto end;
    }
 
    head = 0; 
    tail = strlen(alphabet) - 1;
 
    /* если буква первая или последняя */
    if ( alphabet[head] == to_find ){
        printf("'%c' is %d-th character in alphabet.\n", to_find, head + 1);
        goto end;
    }
    if ( alphabet[tail] == to_find ){
        printf("'%c' is %d-th character in alphabet.\n", to_find, tail + 1);
        goto end;
    }
 
    while ( ( middle = head + ( tail - head ) / 2 ) > head ){
        if ( alphabet[middle] == to_find ){
            printf("'%c' is %d-th character in alphabet.\n", to_find, middle + 1);
            goto end;
        }
        else if ( alphabet[middle] < to_find )
            head = middle;
        else
            tail = middle;
    }
 
    printf("'%c' not found in alphabet!\n", to_find);
 
end:
    getchar();
    getchar();
    exit(0);
 
}
1
 Аватар для Natusi4ek
1 / 1 / 0
Регистрация: 22.01.2010
Сообщений: 10
16.02.2010, 23:53  [ТС]
Ооу))

Это тоже работает))))) блин вы клевые ребята !! я вас люблю !!!
0
1261 / 799 / 108
Регистрация: 16.09.2009
Сообщений: 2,010
17.02.2010, 18:30
Я опять искала в инете
А на форуме лень поискать.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
17.02.2010, 18:30
Помогаю со студенческими работами здесь

Бинарный поиск
Писал алгоритм бинарного поиска по массиву строк. В результате, почему-то, периодически функция не находит строку, которая есть. int...

Бинарный поиск
Написал программу бинарного поиска элемента v. Не могу понять в чем ошибка, не считает количество элементов массива удовлетворяющий...

Бинарный поиск
Никак не могу понять почему у меня не проходит тесты данный код. Задача выглядит так: Входные данные В первой строке входных...

Бинарный поиск
Заполнить массив случайными числами и отсортировать его. Ввести число X. Используя двоичный поиск, определить, есть ли в массиве число,...

Бинарный поиск c++
1) последовательного поиска максимального элемента в одномерном динамическом массиве; 2) бинарного поиска количества нулевых элементов...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru