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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Вывести на печать элементы массива, значения которых не принадлежат промежутку http://www.cyberforum.ru/cpp-beginners/thread537318.html
Помогите пожалуйста решить задачу на СИ. В одномерном массиве, состоящем из n вещественных элементов, – вывести на печать элементы массива, значения которых не принадлежат промежутку . Значения a,b задавать с клавиатуры; – вычислить количество элементов массива, не меньших элемента с заданным номером, значение номера вводить с клавиатуры; – заменить все положительные элементы массива их...
C++ Возведение в степени, не используя pow Как возвести в степень, не используя pow(a, b) ? И не пользуясь math.h http://www.cyberforum.ru/cpp-beginners/thread537316.html
FFT в bass.dll C++
Доброго времени суток!Оговорюсь сразу я не программист и пишу программу методом "copy-past"))) ну некому больше ! К делу! для обработки звука посоветовали bass.dll-я во всем разобрался кроме одного:float fft; BASS_ChannelGetData(chan, fft, BASS_DATA_FFT1024); fft-здесь как я понимаю реальная часть, а как получить и мнимую?Если можно подкиньте примерчик.Заранее спасибо
Прошу помощи ,не двигается змейка C++
#include<iostream> #include<windows.h> #include<conio.h> using namespace std; const int Y = 20, X = 50; enum DIR{UP, DOWN, LEFT, RIGHT}; void main() {
C++ Моделирование случайных чисел с экспоненциальным законом распределения http://www.cyberforum.ru/cpp-beginners/thread537300.html
Программирования случайных чисел с экспоненциальным законом распределения. Товарищи помогите пожалуйста.
C++ Вопрос о bmp[header info] Хочу открыть bmp файл и проверить, на самом ли деле это BMP. Для этого, делаю проверку первых двух байт на BM, и следующих четырех с размером файла, НО эти четыре байта CE 6B 0E 00 (h) = 3463122432(d). Однако же размер совсем другой, в чем неправильная моя математика? подробнее

Показать сообщение отдельно
XNick
 Аватар для XNick
3 / 3 / 1
Регистрация: 29.01.2010
Сообщений: 113
03.04.2012, 00:49     Программная реализация алгоритма бинарного поиска
Всем привет! Помогите составить программу
Задача: Выполнить программную реализацию алгоритма бинарного поиска.
Код я нашел, но при компиляции появляется ошибка на отсутствие фала bios.h, и на fstream.h ругается.
Может есть библиотеки которые могут заметить. Помогите, исправить.
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
//Бинарный поиск
#include <bios.h>
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <fstream.h>
#include <io.h>
 
void GetArray(int *mas, int &cnt) //функция загрузки массива из файла
{
  cnt=0;
  int v;
  char *fn="";
  cout<<"Введите имя файла с массивом чисел: ";
  cin>>fn;
  if (access(fn, 0)!=0) //проверим наличие файла
  {
    cout<<"\nОшибка: Не удается открыть файл!!!\n";
    bioskey(0);
    exit(1);
  }
  cout<<"\nЗагрузка массива:\n";
  ifstream fin(fn);
  while (!fin.eof()) //загрузим все элементы из файла и определим их количество
  {
    fin>>v;
    if (!fin.eof())
    {
      cnt++;
      mas[cnt]=v;
      cout<<"   "<<v;
    }
  }
  cout<<"\nЗагружено "<<cnt<<" элементов массива.\n";
  fin.close();
}
 
 
void ShowArray(int *mas, int cnt) //функция вывода массива на экран
{
  cout<<"[";
  for (int i=1; i<=cnt; i++) {printf("%3d ", mas[i]);}
  cout<<"]\n";
}
 
void SortArray(int *mas, int cnt) //функция сортировки массива (методом выбора)
{
  int tmp;
  int min=1;
  for (int i=1; i<cnt; i++)
  {
    min=i;
    for (int j=i; j<=cnt; j++)
    {
      if (mas[j]<mas[min]) {min=j;}
    }
    tmp=mas[min];
    mas[min]=mas[i];
    mas[i]=tmp;
  }
}
 
int FindValue(int *mas, int cnt, int value, int &step) //рекурсивная функция для поиска элемента в массиве
{
  step++;
  cout<<"Итерация № "<<step<<", массив для поиска: ";
  ShowArray(mas, cnt);
 
  int res;
  int mid=(cnt/2)+(cnt%2); //определим середину массива
 
  if (value==mas[mid]) //если элемент оказался в середине, то нашли!
  {
    cout<<"    "<<value<<"=="<<mas[mid]<<"\n\n";
    return mid;
  }
  if (cnt<=1) {return -1;}
 
  if (value<mas[mid]) //если значение меньше среднего элемента массива, то ищем в левой части
  {
    cout<<"    "<<value<<"<"<<mas[mid]<<"\n\n";
    res=FindValue(&mas[0], (mid-1), value, step);
    if (res<0) {return -1;}
    return res;
  }
  else  //если же значение больше среднего элемента массива, то ищем в правой части
  {
    cout<<"    "<<value<<">"<<mas[mid]<<"\n\n";
    res=FindValue(&mas[mid], (cnt-mid), value, step);
    if (res<0) {return -1;}
    return mid+res;
  }
}
 
 
void main()
{
  int N; //количество элементов в массиве
  int A[256]; //массив
 
  clrscr();
  cout<<"\n                      < < < Б и н а р н ы й   п о и с к > > >\n\n";
  GetArray(A, N); //загрузи массив
  printf("\nЗагружен следующий массив A[%d]:\n", N);
  ShowArray(A, N);
 
  printf("\nПроведем сортировку массива:\n");
  SortArray(A, N); //отсортируем массив для поиска
 
  int v; //искомое значение
  int i; //позиция найденного элемента в массиве
  char ch;
  do {
    int j=0; //количество итераций
    printf("Итоговый массив:\n");
    ShowArray(A, N);
    printf("\nНайти элемент массива  v=");
    cin>>v;
 
    printf("\nНачинаем бинарный поиск.\n");
    i=FindValue(A, N, v, j);
    if (i<=0) {printf("\nЭлемент %d в массиве не найден!\n", v);}
    else {printf("\nЭлемент %d найден в %d-й позиции на %d-й итерации.\n", v, i, j);}
 
    printf("\nИскать другой элемент? (ENTER - да)\n\n");
    ch=bioskey(0);
    clrscr();
  } while (ch==13);
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 05:33. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru