Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
a4temer
0 / 0 / 2
Регистрация: 15.12.2014
Сообщений: 121
1

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

09.02.2015, 21:32. Просмотров 483. Ответов 1
Метки нет (Все метки)

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

Вот код в чем ошибка неверно находит сумму.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
using namespace std;
int main()
{
    int mss[20] = { -1, -2, -3, -4, -5, -6, -7, -8, -9, -10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20 }; 
    int klu = 0, ars = 0, r = 0, l = 20 - 1, sum = 0;   
    cout << "Enter the number of cell index which must be found " << endl;
    cin >> klu;
    while (r < l) {
        ars = r + (l - r) / 2;
 
        if (klu <= mss[ars]) l = ars;
        else r = ars + 1;
    }   
    for (int j = 0; j < l; j++) {
        summa += mss[size];
    }
    if (mss[l] == klu) cout << "Found! " << l;
    else cout << "Error! Not found!";
    cout << "Sum " << sum << endl;
    return 0;
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.02.2015, 21:32
Ответы с готовыми решениями:

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

Бинарный поиск
#include &lt;iostream&gt; #include &lt;fstream&gt; #include &lt;algorithm&gt; #include...

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

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

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

1
Khelleos
38 / 38 / 25
Регистрация: 13.05.2010
Сообщений: 283
Записей в блоге: 1
09.02.2015, 23:20 2
Цитата Сообщение от a4temer Посмотреть сообщение
if (klu <= mss[ars]) l = ars;
* * * * else r = ars + 1;
Неверно условие, что если вы нашли своё число и вместо остановки продолжаете искать его дальше?
C++
1
2
3
if (klu == mss[ars]) break;
else if (klu < mss[ars]) l = ars;
else r = ars + 1;
И не объявлены все переменные!

А сумма считается следующим образом
C++
1
2
3
int sum = 0;
for (int i = 0; i < ars; i++)
    sum += mss[i];
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.02.2015, 23:20

Бинарный поиск
Что переделать в программе, чтобы она находила первый элемент больше или равный...

Бинарный поиск
Прочитал статью на хабре, о том, что только 10 проц программистов смогут...

Бинарный поиск
помоги мне плиз ответить на вопросы Бинарный поиск #include &lt;iostream&gt;...


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

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

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