Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.64
Natusi4ek
 Аватар для Natusi4ek
0 / 0 / 0
Регистрация: 22.01.2010
Сообщений: 10
27.01.2010, 17:22     Поиск. Бинарный поиск #1
Ребятушки, а это опять я
Задали индивидуальное задание " Бинарный поиск "
Препод сказал, сделать простейшую программку с методом бинарного поиска)

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

помогите пожалуйста а
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.01.2010, 17:22     Поиск. Бинарный поиск
Посмотрите здесь:

C++ бинарный поиск
Бинарный поиск C++
Бинарный поиск C++
C++ Бинарный поиск
C++ Бинарный поиск
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
odip
Эксперт C++
 Аватар для odip
7224 / 3286 / 58
Регистрация: 17.06.2009
Сообщений: 14,165
27.01.2010, 18:40     Поиск. Бинарный поиск #2
http://codelab.ru/t/binsearch/cpp/#realizations
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9371 / 5421 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
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);
}
Natusi4ek
 Аватар для Natusi4ek
0 / 0 / 0
Регистрация: 22.01.2010
Сообщений: 10
16.02.2010, 23:16  [ТС]     Поиск. Бинарный поиск #4
А у меня проблема, программа та работает, Выскакивает типа введите букву для поиска, я в вожу к примеру " С" и после тут же закрывается, а где и как нада что то дописать, что бы она показала результат и после дополнительного нажатия на ENTER она закрылась??????????
M128K145
Эксперт C++
 Аватар для M128K145
8272 / 3491 / 142
Регистрация: 03.07.2009
Сообщений: 10,707
16.02.2010, 23:21     Поиск. Бинарный поиск #5
http://www.cyberforum.ru/cpp-beginners/thread10807.html
Natusi4ek
 Аватар для Natusi4ek
0 / 0 / 0
Регистрация: 22.01.2010
Сообщений: 10
16.02.2010, 23:25  [ТС]     Поиск. Бинарный поиск #6
ни понятно ни чего ((((((((

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

все ровно ни останавливается...... чиво делать Чебурашка)?
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9371 / 5421 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
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);
}
должно ждать, а не сразу закрываться.
А вообще консольные приложения лучше всего в консоли компилировать и в ней же запускать
Natusi4ek
 Аватар для Natusi4ek
0 / 0 / 0
Регистрация: 22.01.2010
Сообщений: 10
16.02.2010, 23:48  [ТС]     Поиск. Бинарный поиск #10
Ураааааааааааа...
M128K145
Эксперт C++
 Аватар для M128K145
8272 / 3491 / 142
Регистрация: 03.07.2009
Сообщений: 10,707
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);
 
}
Natusi4ek
 Аватар для Natusi4ek
0 / 0 / 0
Регистрация: 22.01.2010
Сообщений: 10
16.02.2010, 23:53  [ТС]     Поиск. Бинарный поиск #12
Ооу))

Это тоже работает))))) блин вы клевые ребята !! я вас люблю !!!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.02.2010, 18:30     Поиск. Бинарный поиск
Еще ссылки по теме:

Бинарный поиск C++
C++ Бинарный поиск
Поиск числа в двумерном массиве (бинарный поиск) C++

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

Или воспользуйтесь поиском по форуму:
Genius Ignat
1233 / 771 / 44
Регистрация: 16.09.2009
Сообщений: 2,014
17.02.2010, 18:30     Поиск. Бинарный поиск #13
Я опять искала в инете
А на форуме лень поискать.
Yandex
Объявления
17.02.2010, 18:30     Поиск. Бинарный поиск
Ответ Создать тему
Опции темы

Текущее время: 10:20. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru