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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.64
Natusi4ek
0 / 0 / 0
Регистрация: 22.01.2010
Сообщений: 10
#1

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

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

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

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

помогите пожалуйста а
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.01.2010, 17:22
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Поиск. Бинарный поиск (C++):

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

Бинарный поиск - C++
Всем привет! У меня вот тут маленькая проблемка! Помогите исправить, а то сама что-то не могу!! (( Когда прога просит ввести ключ...

Бинарный поиск - C++
Реализовать алгоритм бинарного поиска количества нулевых элементов двумерного динамического массива. Это вообще возможно? Пробовал...

Бинарный поиск - C++
Что переделать в программе, чтобы она находила первый элемент больше или равный заданному? #include "stdafx.h" #include <iostream> ...

Бинарный поиск - C++
Вот вроде бы всё работает только как-то не очень правильно не находит 2 позицию в массиве и пред последнею может ещё что-то не находит , я...

Бинарный поиск - C++
помоги мне плиз ответить на вопросы Бинарный поиск #include <iostream> using namespace std; int BinSearch(int *M, int n,...

12
odip
Эксперт С++
7159 / 3221 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
27.01.2010, 18:40 #2
http://codelab.ru/t/binsearch/cpp/#realizations
0
easybudda
Модератор
Эксперт CЭксперт С++
9698 / 5648 / 964
Регистрация: 25.07.2009
Сообщений: 10,863
27.01.2010, 19:32 #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
#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
0 / 0 / 0
Регистрация: 22.01.2010
Сообщений: 10
16.02.2010, 23:16  [ТС] #4
А у меня проблема, программа та работает, Выскакивает типа введите букву для поиска, я в вожу к примеру " С" и после тут же закрывается, а где и как нада что то дописать, что бы она показала результат и после дополнительного нажатия на ENTER она закрылась??????????
0
M128K145
Эксперт С++
8300 / 3520 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
16.02.2010, 23:21 #5
http://www.cyberforum.ru/cpp-beginners/thread10807.html
0
Natusi4ek
0 / 0 / 0
Регистрация: 22.01.2010
Сообщений: 10
16.02.2010, 23:25  [ТС] #6
ни понятно ни чего ((((((((

кто не будь подскажите что дописать
0
easybudda
Модератор
Эксперт CЭксперт С++
9698 / 5648 / 964
Регистрация: 25.07.2009
Сообщений: 10,863
16.02.2010, 23:33 #7
Natusi4ek, самый простой способ - везде перед exit(0); вставить два раза подряд getchar(); - будет ждать, пока enter не нажмёте.
0
Natusi4ek
0 / 0 / 0
Регистрация: 22.01.2010
Сообщений: 10
16.02.2010, 23:36  [ТС] #8
Вставила 2 раза getchar();
getchar(); перед exit(0);

все ровно ни останавливается...... чиво делать Чебурашка)?
0
easybudda
Модератор
Эксперт CЭксперт С++
9698 / 5648 / 964
Регистрация: 25.07.2009
Сообщений: 10,863
16.02.2010, 23:46 #9
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
0 / 0 / 0
Регистрация: 22.01.2010
Сообщений: 10
16.02.2010, 23:48  [ТС] #10
Ураааааааааааа...
0
M128K145
Эксперт С++
8300 / 3520 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
16.02.2010, 23:50 #11
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
0 / 0 / 0
Регистрация: 22.01.2010
Сообщений: 10
16.02.2010, 23:53  [ТС] #12
Ооу))

Это тоже работает))))) блин вы клевые ребята !! я вас люблю !!!
0
Genius Ignat
1237 / 775 / 44
Регистрация: 16.09.2009
Сообщений: 2,014
17.02.2010, 18:30 #13
Я опять искала в инете
А на форуме лень поискать.
0
17.02.2010, 18:30
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.02.2010, 18:30
Привет! Вот еще темы с ответами:

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

Бинарный поиск - C++
Каким образом выполнить бинарный поиск определнного значения в отсортированном массиве?

Бинарный поиск - C++
Найти индекс расположения числа 15 в массиве на 20 элементов и сумму элементов предшествующих ему. Методом бинарного поиска. Вот код в...

Бинарный поиск - C++
за какое время работает бинарный поиск?


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.