Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.11.2016, 00:53   #1
Bombucho
Пользователь
 
Регистрация: 03.11.2016
Сообщений: 10
По умолчанию Бинарный поиск элемента в массиве.

Всем привет, вообщем имеется массив с n-колвом элементов который сортируется по убыванию, цель найти местонахождение определенного элемента опять же введенного с клавы, массив сортируется хорошо, но вот когда написал функцию бинарного поиска выдает ошибку(пише через ideone, какая ошибка не пишет просто просто выводит массив)
Код:
#include <iostream>
#include <cstdlib>
using namespace std;
//сортировка вставкой по убыванию
void insertSort(int *arrayPtr, int length);
// бинарный поиск числа
void binnary(int*sorted_array);


int main( )
{
    cout << "Введите размер массива: ";
    int size_array; // длинна массива
    cin >> size_array;
 
    int *sorted_array = new int [size_array]; //  динамический массив проверить через calc и предописать все функции (удалить их из до int main и опистаь до int main)
    cout<<endl;   
    cout<<"Одномерный массив:";
    for (int counter = 0; counter < size_array; counter++) // цикл заполнения массива
    {
 
        sorted_array[counter] = rand() % 100; // заполняем массив случайными числами
        cout <<sorted_array[counter] << "  "; // вывод массива на экран
    }
    cout << endl;
 
    insertSort(sorted_array, size_array); // вызов функции сортировки вставками
    cout<<"Отсортиров массив:"; 
    for (int counter = 0; counter < size_array; counter++)
    {
        cout <<sorted_array[counter] << "  "; // печать отсортированного массива
    }
    
    binnary(sorted_array);
 {
   cout<<endl;
 }
    
    delete [ ] sorted_array; // высвобождаем память
    system("pause");
    return 0;
}


void insertSort(int *arrayPtr, int length) // сортировка вставками
{
    int temp, // переменная для хранения значения элемента сортируемого массива
        item; // индекс предыдущего элемента
    for (int counter = 1; counter < length; counter++)
    {
        temp = arrayPtr[counter]; // инициализируем временную переменную текущим значением элемента массива
        item = counter-1; // запоминаем индекс предыдущего элемента массива
        while(item >= 0 && arrayPtr[item] < temp) // пока индекс не равен 0 и предыдущий элемент массива больше текущего
        {
            arrayPtr[item + 1] = arrayPtr[item]; // перестановка элементов массива
            arrayPtr[item] = temp;
            item--;
        }
    }
}


void binnary(int*sorted_array )
{
   int
         average_index, // хранение среднего элемента
         first_index, // хранение первого элемента
         last_index;  // хранение последнего элемента 
cout<<endl;
 cout<<"Введите искомое число:"<<endl;
    int search;
    cin>>search;
// искомое число
  // if( last_index == -1)
   //    cout<<"Массив пуст!"<<endl;
bool f=false;
   while  ((first_index<=last_index)&&(!f))
{
       average_index = (first_index+last_index )/2; 
       // проверяем найден ли будет элемент (выражение)?(если верно):(если ложно)
  
  if (search == sorted_array[average_index])
{
 f=true;
}  
else    
   if  (search > sorted_array[average_index])
{
    last_index  = average_index-1;
    }  
else  
   if  (search < sorted_array[average_index])
{
    first_index  = average_index+1;
    }
}   
if (f) cout<<"Искомое число:"<< sorted_array[average_index]<<endl;
else
cout<<"Введенное число не найдено";
}
Bombucho вне форума Ответить с цитированием
Старый 03.11.2016, 08:36   #2
Bombucho
Пользователь
 
Регистрация: 03.11.2016
Сообщений: 10
По умолчанию

Функцию бинарного поиска написал перед главной функцией, теперь ошибки не выдает, НО и ничего не выводит кроме отсорт.массива...
Bombucho вне форума Ответить с цитированием
Старый 03.11.2016, 10:57   #3
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

15.jpg
ura_111 вне форума Ответить с цитированием
Старый 03.11.2016, 11:43   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Как чему? Неинициализированные локальные переменные равны чему угодно...
p51x вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Реализовать два метода поиска строк в массиве: поиск перебором, бинарный поиск на языке Pascal DimzNOVIchok45 Помощь студентам 7 19.09.2014 21:40
Бинарный(Двоичный) поиск в одномерном массиве bonjovi Паскаль, Turbo Pascal, PascalABC.NET 1 31.01.2012 17:10
Бинарный поиск в массиве Driver_09 Помощь студентам 8 28.05.2010 15:53
Нужен совет(бинарный поиск в 2-d массиве) sergey31 Помощь студентам 2 27.04.2008 13:49