Оригинальный DVD-ROM: eXeL@B DVD !
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 1 марта!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

ПРОГРАММИРОВАНИЕ НА C и С++



Давно заметил, что всё-таки языки С/C++ это не самый лучший вариант программирования под Windows. Сейчас появилась масса более современных и удобных языков, например тот же Python - кроссплатформенный язык, очень легок в изучение. Я его изучил буквально за несколько дней по этому курсу - ссылка. Автор постарался, там видеоуроки на удивление легкие и понятные.

bsearch

 
 Функция            Двоичный поиск в массиве.
 
 
 
 Синтаксис          #include <stdlib.h>
 
                    void * bsearch(const void * key, const void * base,
 
                           size_t  nelem, size_t width,
 
                           int (*fcmp) (const void *, const void *));
 
 
 
 Файл, содержащий   stdlib.h
 
 прототип
 
 
 
 Описание           bsearch осуществляет поиск по таблице (массиву) из
 
                    элементов nelem и возвращает адрес первого элемента
 
                    в таблице,  который соответствует  шаблону  поиска.
 
                    Если соответствие не найдено, то bsearch возвращает
 
                    значение, равное 0.  Заметим, что поскольку функция
 
                    выполняет двоичный поиск, то первый соответствующий
 
                    элемент не обязательно  будет  первым  элементом  в
 
                    таблице.
 
 
 
                    Тип size_t определяется как unsigned int.
 
 
 
                    - nelem задает количество элементов таблицы.
 
 
 
                    - width  задает  количество  байт в каждом элементе
 
                      таблицы.
 
 
 
                    Функция сравнения   fcmp   вызывается    с    двумя
 
                    аргументами:   elem1   и   elem2.  Каждый  аргумент
 
                    указывает   на   сравниваемый   элемент.    Функция
 
                    сравнения     сравнивает    элементы,    адресуемые
 
                    указателями (*elem1 и *elem2)  и  возвращает  целое
 
                    значение, зависящее от результатов сравнения.
 
 
 
                    Для bsearch *fcmp возвращает следующие значения:
 
 
 
                      < 0   *elem1 <  *elem2
 
                      ==0   *elem1 == *elem2
 
                      > 0   *elem1 >  *elem2
 
 
 
 Возвращаемое       bsearch возвращает адрес первого элемента таблицы,
 
 значение           соответствующего ключу    поиска.    Если    такого
 
                    соответствия не найдено,  то возвращается значение,
 
                    равное 0.
 
 
 
 Переносимость      Поддерживается в системах UNIX и определена в
 
                    ANSI C.
 
 
 
 Смотрите также     lfind, lsearch, qsort.
 
 
 
 Пример:
 
 
 
 #include <stdlib.h>
 
 #include <stdio.h>
 
 
 
 #define NELEMS(arr)   (sizeof(arr) / sizeoff(arr[0]))
 
 
 
 int numarray[] = {123, 145, 512, 627, 800, 993};
 
 int numeric(int *pl, int *p2)
 
 {
 
    return(*p1 - *p2);
 
 }
 
 int lookup(int key)
 
 {
 
    int *itemptr;
 
    /* явное преобразование
 
       необходимо для исключения ошибки несовпадения типов, воз-
 
       никающей во время компиляции */
 
    itemptr = bsearch(&key, numarray, NELEMS(numarray),
 
        sizeof(int), (int (*)(const void *,const void *))numeric);
 
    return (itemptr != NULL);
 
 }
 
 int main(void)
 
 {
 
    if(lookup(512))
 
       printf("В таблице есть элемент 512\n");
 
    else
 
       printf("В таблице нет элемента 512\n");
 
    return 0;
 
 }

<< ВЕРНУТЬСЯ В ПОДРАЗДЕЛ

<< ВЕРНУТЬСЯ В ОГЛАВЛЕНИЕ




Материалы находятся на сайте https://exelab.ru/pro/



Оригинальный DVD-ROM: eXeL@B DVD !


Вы находитесь на EXELAB.rU
Проект ReactOS