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

Ввести число и найти в массиве ближайшее к нему методом двоичного поиска - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ В данной квадратной матрице порядка 17 указать индексы всех элементов с наименьшим значением http://www.cyberforum.ru/cpp-beginners/thread262865.html
В данной квадратной матрице порядка 17 указать индексы всех элементов с наименьшим значением
C++ НЕправильно работает пара ф-ций сделал стэк, дэк и очередь, дэк не хочет добавлять, говорит, уже полный. мож я где лохонулся? помогите устранить ошибку не пугайтесь большого быдлокода, пожалуйста //очередь и дек в хед файле... http://www.cyberforum.ru/cpp-beginners/thread262863.html
C++ Программирование на С++
Помогите дорешать задачу в С++: Дано целое число N и набор из N целых чисел. Вывести номера тех чисел в наборе, которые больше своего правого соседа, и количество K таких чисел. #include...
system("") промелькивает окно cmd(( c++ C++
Значит есть функция system("start steam://rungameid/240"); Проблема в том что когда запускаешь программу то промелькивает окно c:/windows/system32/cmd.exe Как сделать что он не мелькало. Вот сам...
C++ Преобразовать строку, записав адрес прававильно: <область>, <нас. пункт>, <улица>, <дом / квартира>, <индекс> http://www.cyberforum.ru/cpp-beginners/thread262838.html
Строка, содержит почтовый адрес, произвольной формы. Преобразовать строку, записав адрес прававильно: <область>, <нас. пункт>, <улица>, <дом / квартира>, <индекс> С помощью #include "stdafx.h"
C++ вычислить С++ подробнее

Показать сообщение отдельно
igorrr37
1648 / 1276 / 133
Регистрация: 21.12.2010
Сообщений: 1,932
Записей в блоге: 7
14.04.2011, 19:49
ищет ближайшее по абсолюту
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
#include<stdio.h>
#include<math.h>
 
int Compare(const void* a, const void* b){
    return *(int*)a-*(int*)b;
}
 
int BSearch (int A[], int Lb, int Ub, int Key){
    int M;
    while(1){
        M = (Lb + Ub)/2;
        if (Key < A[M]){
            Ub = M - 1;
        }
        else if (Key > A[M]){
            Lb = M + 1;
        }
        else{
            return M;
        }
        if (Lb > Ub){
            return fabs(A[Lb]-Key)<fabs(A[Ub]-Key)? Lb: Ub;
        }
    }
}
 
int main(){
    int arr[]={-20,50,-10,0,10,20,-30,30,40}, size=sizeof(arr)/sizeof(*arr), key=23, i;
    qsort(arr, size, sizeof(*arr), Compare);
    puts("Sorted array:");
    for(i=0; i<size; i++){
        printf("%d ", arr[i]);
    }
    int index=BSearch(arr, 0, size, key);
    printf("\n\nNearest number: %d", arr[index]);
    return 0;
}
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru