Помогите пожалуйста написать программку...
|
|
Нужно написать программу, используя алгоритм двоичного поиска...количество символов в 1 строке:3... Данные: - задан массив символов, элементы которого должны быть введены с клавиатуры; - результатом работы программы поиска является либо строка 'элемент найден', либо 'элемент не найден'; - символ для поиска должен вводиться с клавиатуры; - результат программы сортировки - исходный и отсортированный массивы; - программа должна быть зациклена, прекращение работы программы - нажатие <ESC>; - количество элементов в массиве не менее 10.
Дополнительный теоретический материал: Алгоритм двоичного поиска. Этот алгоритм широко применяется в системных программах и известен в литературе также и под другими названиями: бинарный, логарифмический, половинного деления и др. Идея его заключается в том, что ключ поиска на каждом шаге сравнивается с элементом, расположенным в середине таблицы или ее части. Если ключ поиска меньше "серединного" элемента, то "нижняя" часть таблицы из последующего рассмотрения исключается, и дальше алгоритм будет работать с "верхней" частью. В противном случае - будет исключаться "верхняя" часть и работа будет выполняться с "нижней". Для точного задания алгоритма необходимо ввести две переменные: NG - нижнюю границу поиска и VG -верхнюю границу поиска. Перед началом поиска им присваиваются следующие значения: NG=1, VG=N. Номер элемента, расположенного в середине, определяется по формуле: J = (VG + NG) / 2 Если ключ поиска X меньше "серединного" элемента Tj, то изменяется верхняя граница VG=j. Если наоборот - то нижняя граница: NG=j.
Помогите пожалуйста!!!
|
|
|
Пример ввода и вывода в студию.
Нужна помощь? Сюда: vkontakte.ru/berestovskiy
|
|
|
Строка: 136421'' Символ:' Отсартированая строка:112346'' Символ: найден #3 или не найден Для продолжения нажмите 1 для выхода нажмите esc
|
|
|
Не компилил..попробуй: 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
|
|
|
А почему не вводиться масив???
|
|
|
Не знаю, я не компилил.. а это что?
Нужна помощь? Сюда: vkontakte.ru/berestovskiy
|
|
|