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

Программа реализации алгоритмов поиска - C++

Восстановить пароль Регистрация
 
SilverDiver
1 / 1 / 0
Регистрация: 03.12.2015
Сообщений: 91
17.05.2016, 17:25     Программа реализации алгоритмов поиска #1
Разработать программу, которая реализует методы поиска (бинарный и интерполяционный) элементов динамического целочисленного массива. Размерность массива ввести с клавиатуры. Инициализировать массив случайным образом в заданном диапазоне. Реализовать программу с помощью отдельных модулей.

Помогите найти ошибку при бинарном поиске (BinarySearch)

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
#include <iostream>
#include <Windows.h>
#include <conio.h>
#include <clocale>
#include <algorithm>
#include <ctime>
#pragma warning(disable:4779)
using namespace std;
 
int BinarySearch(int A[], int value, int N) {
    int low = 0;
    int high = N;
    int mid = 0;
    while (low <= high) {
        mid = (low + high) / 2;
        if (A[mid] > value)
            high = mid - 1;
        else if (A[mid] < value)
            low = mid + 1;
        else return --mid;
    }
}
void main(){
    srand(time(NULL));
    setlocale(LC_ALL, "rus");
    const int size = 10;
    int mas[size];
    cout << "Массив\n";
    for (int i = 0; i < size; i += 1){
        mas[i] = rand() % 999;
        cout << mas[i] << "\t";
    }
    cout << "Введите число\t";
    int val;
    cin >> val;
    cout << "Индекс элемента\t" << BinarySearch(&mas[size], val, size) << "\n"; //Выводит все время 4, какое бы число я не писал
    system("pause");
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.05.2016, 17:25     Программа реализации алгоритмов поиска
Посмотрите здесь:

C++ Программа циклических алгоритмов.
C++ Анализ алгоритмов поиска
Разработка алгоритмов и программ по реализации перегрузки операторов C++
Разработка алгоритмов поиска в массивов [Задача] C++
Подскажите название алгоритмов поиска и сортировки информации C++
C++ реализации класса «Дерево двоичного поиска»
Разработать программу для сравнительного графического анализа алгоритмов сортировки и поиска C++
Использовать перегрузку функций для реализации алгоритмов сортировки C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
drtbtrybt
0 / 0 / 0
Регистрация: 17.05.2016
Сообщений: 1
17.05.2016, 20:12     Программа реализации алгоритмов поиска #2
SilverDiver, бинарный поиск используется для отсортированных массивов.
C++
1
    cout << "Индекс элемента\t" << BinarySearch(&mas[size], val, size) << "\n"; //Выводит все время 4, какое бы число я не писал
В этой строке
C++
1
&mas[size]
- это адрес области памяти за пределами массива, нужно в функцию передавать только
C++
1
mas
.
SilverDiver
1 / 1 / 0
Регистрация: 03.12.2015
Сообщений: 91
17.05.2016, 21:08  [ТС]     Программа реализации алгоритмов поиска #3
До сих пор выводит случайный индекс элемента.

Добавлено через 2 минуты
Ошибка в этой части кода:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
int BinarySearch(int A[], int value, int N) {
    int low = 0;
    int high = N;
    int mid = 0;
    while (low <= high) {
        mid = (low + high) / 2;
        if (A[mid] > value)
            high = mid - 1;
        else if (A[mid] < value)
            low = mid + 1;
        else return --mid;
    }
}
Yandex
Объявления
17.05.2016, 21:08     Программа реализации алгоритмов поиска
Ответ Создать тему
Опции темы

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