Будем жить, Маэстро...
Сообщения: 6694
Благодарности: 1393
|
Профиль
|
Сайт
|
Отправить PM
| Цитировать
Может не в тему языка, но на С++ это выглядит так, если можешь перевести на Pascal или форумчане переведут... То вот...
читать дальше »
Код: 
//Бинарный поиск
#include <iostream>
using std::cout;
using std::cin;
using std::endl;
#include <iomanip>
using std::setw;
int binarySearch(const int[], int, int, int, int);
void printHeader(int);
void printRow(const int[], int, int, int, int);
int main()
{
int const arraySize = 15;
int z,
a[arraySize],
key,
result;
for(int i = 0; i < arraySize; i++)
a[i] = 2 * i;
cout<<"ENTER NUMBER IN DIAPAZON 0 AND 28: ";
cin>>key;
while(key != -1){
printHeader(arraySize);
result = binarySearch(a, key, 0, arraySize - 1, arraySize);
if(result != -1)
cout<<'\n'<<key<<" FOUND THE ELEMENT OF MASSIVA "<<result<<endl;
else
cout<<'\n'<<key<<" NO FOUND "<<endl;
cout<<"ENTER NUMBER IN DIAPAZON 0 AND 28: ";
cin>>key;
}
return 0;
}
// Функция бинарного поиска
int binarySearch(const int b[], int searchKey, int low, int high, int size)
{
int midlle;
while(low <= high){
midlle = (low + high) / 2;
printRow(b, low, midlle, high, size);
if(searchKey == b[midlle])
return midlle;
else if(searchKey < b[midlle])
high = midlle - 1; // определение нижнего конца массива
else
low = midlle + 1; // определение верхнего конца массива
}
return -1;
}
// Первоначальнный массив с рассположенными элементами
void printHeader(int size)
{
int i;
cout<<"\nINDEKS:\n";
for(i = 0; i < size; i++)
cout<<setw(3)<<i<<' ';
cout<<'\n';
for(i = 1; i<= 4 * size; i++)
cout<<'-';
cout<<endl;
}
// Функции графического представления бинарного поиска
void printRow(const int b[], int low, int mid, int high, int size)
{
for(int i = 0; i < size; i++)
if(i < low || i > high)
cout<<" ";
else if(i == mid) // отметить среднее значение
cout<<setw(3)<<b[i]<<'*';
else
cout<<setw(3)<<b[i]<<' ';
cout<<endl;
}
|
-------
Правильная постановка вопроса свидетельствует о некотором знакомстве с делом.
3нание бывает двух видов. Мы сами знаем предмет — или же знаем, где найти о нём сведения.
[Quick Killer 3.0 Final [OSZone.net]] | [Quick Killer 3.0 Final [SafeZone.cc]] | [Парсер логов Gmer] | [Парсер логов AVZ]
http://tools.oszone.net/Drongo/Userbar/SafeZone_cc.gif
Последний раз редактировалось Drongo, 29-05-2008 в 17:39.
Отправлено: 12:50, 29-05-2008
| #4
|