Новые сообщения · Правила  
Страница 1 из 11
Модератор форума: Berestovskiy 
Форум ПРОГРАММИСТОВ » ПРОГРАММИРОВАНИЕ » Паскаль » Помогите пожалуйста написать программку... (Нужно написать программу, используя алгоритм двоичного поиск)
Помогите пожалуйста написать программку...
Нужно написать программу, используя алгоритм двоичного поиска...количество символов в 1 строке:3...
Данные:
 - задан массив символов, элементы которого должны быть введены с клавиатуры;
 - результатом работы программы поиска является либо строка 'элемент найден', либо 'элемент не найден';
- символ для поиска должен вводиться с клавиатуры;
 - результат программы сортировки - исходный и отсортированный массивы;
 - программа должна быть зациклена, прекращение работы программы - нажатие <ESC>;
- количество элементов в массиве не менее 10.

Дополнительный теоретический материал:
Алгоритм двоичного поиска. Этот алгоритм широко применяется в системных программах и известен в литературе также и под другими названиями: бинарный, логарифмический, половинного деления и др. Идея его заключается в том, что ключ поиска на каждом шаге сравнивается с элементом,
расположенным в середине таблицы или ее части.
Если ключ поиска меньше "серединного" элемента, то "нижняя" часть таблицы из последующего рассмотрения исключается, и дальше алгоритм будет работать с "верхней" частью. В противном случае - будет исключаться "верхняя" часть и работа будет выполняться с "нижней". Для точного задания
алгоритма необходимо ввести две переменные: NG - нижнюю границу поиска и VG -верхнюю границу поиска. Перед началом поиска им присваиваются следующие значения: NG=1, VG=N. Номер элемента, расположенного в середине, определяется по формуле:
J = (VG + NG) / 2
Если ключ поиска X меньше "серединного" элемента Tj, то изменяется верхняя граница VG=j. Если наоборот - то нижняя граница: NG=j.

Помогите пожалуйста!!!
1 | Автор: Hickol | 2012-01-27, 12:58   |  Репутация: [ + 0 ]
Пример ввода и вывода в студию.

Нужна помощь? Сюда: vkontakte.ru/berestovskiy
2 | Автор: Berestovskiy | 2012-01-27, 19:38   |  Репутация: [ + 211 ]
Строка: 136421''
Символ:'
Отсартированая строка:112346''
Символ: найден #3 или не найден
Для продолжения нажмите 1 для выхода нажмите esc
3 | Автор: Hickol | 2012-02-13, 09:19   |  Репутация: [ + 0 ]
Не компилил..попробуй:
uses crt;
var
q,c:char;
s:string;
i,j:integer;
begin
repeat begin
readln(s);
read(q);
for i:=1 to length(s) do
for j:=1 to length(s)-1 do
if ord(s[j])>ord(s[j+1])then
begin c:=s[j];s[j]:=s[j+1];s[j+1]:=c;end;
writeln(s);
if pos(q,s)=0 then writeln('simvol ne neiden')else
writeln('simvol naiden pod nomerom: ',pos(q,s));
writeln('dlya prodoljeniya press 1');
c:=readkey;
end;
until c<>'1';
end.


Нужна помощь? Сюда: vkontakte.ru/berestovskiy
4 | Автор: Berestovskiy | 2012-02-13, 17:49   |  Репутация: [ + 211 ]
А почему не вводиться масив???
5 | Автор: Hickol | 2012-02-15, 09:41   |  Репутация: [ + 0 ]
Не знаю, я не компилил..
а это что?
Quote (Hickol)
readln(s);


Нужна помощь? Сюда: vkontakte.ru/berestovskiy
6 | Автор: Berestovskiy | 2012-02-15, 18:59   |  Репутация: [ + 211 ]
Форум ПРОГРАММИСТОВ » ПРОГРАММИРОВАНИЕ » Паскаль » Помогите пожалуйста написать программку... (Нужно написать программу, используя алгоритм двоичного поиск)
Страница 1 из 11
Поиск: