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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
SilverDiver
1 / 1 / 0
Регистрация: 03.12.2015
Сообщений: 110
#1

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

17.05.2016, 17:25. Просмотров 83. Ответов 2
Метки нет (Все метки)

Разработать программу, которая реализует методы поиска (бинарный и интерполяционный) элементов динамического целочисленного массива. Размерность массива ввести с клавиатуры. Инициализировать массив случайным образом в заданном диапазоне. Реализовать программу с помощью отдельных модулей.

Помогите найти ошибку при бинарном поиске (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");
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.05.2016, 17:25
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Программа реализации алгоритмов поиска (C++):

Разработка алгоритмов и программ по реализации перегрузки операторов - C++
Разработка алгоритмов и программ по реализации перегрузки операторов!!!!!!!!!!!!!! условие: Описать класс одномерный массив (вектор)...

Использовать перегрузку функций для реализации алгоритмов сортировки - C++
Массив данных заполнять случайным образом. Рассмотреть массивы данных из элементов типа long и float. Использовать перегрузку функций для...

Анализ алгоритмов поиска - C++
Написать программу, в которой используются четыре метода поиска: 1. Линейный поиск в массиве. 2. Бинарный поиск в заранее...

Разработка алгоритмов поиска в массивов [Задача] - C++
Всем привет. Кто поможет написать задачку? Дано натуральное число n. Выяснить, сколько положительных элементов содержит массив А...

Подскажите название алгоритмов поиска и сортировки информации - C++
У меня есть код, но я не знаю какой это метод поиска информации: void DataBase::find(double price) { int cnt =...

Класс для реализации различных видов поиска элемента в массиве - 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
.
0
SilverDiver
1 / 1 / 0
Регистрация: 03.12.2015
Сообщений: 110
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;
    }
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.05.2016, 21:08
Привет! Вот еще темы с ответами:

Разработать программу для сравнительного графического анализа алгоритмов сортировки и поиска - C++
Разработать программу для сравнительного графического анализа алгоритмов сортировки и поиска;Задача разработчика сгенерировать массив, над...

Программа реализации функции х % от у - остаток от деления (при этом х % 0 = 0) - C++
помогите написать стандартную программу для мпд, которая реализует функцию х % от у - остаток от деления (при этом х % 0 = 0). помогите...

Отделение интерфейса от реализации класса: компиляция кода реализации - C++
Доброго времени суток, У меня возникла проблема с отделением интерфейса от реализации класса. Допустим, у меня есть три файла: 1....

Программа поиска - C++
Почему эта программа не работает? Не могу найти ошибку. Первый раз цикл написал внутри другого цикла. Подумал из за этого типа исправил....


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

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

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