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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.01.2012, 01:03   #1
Annushka1
 
Регистрация: 20.01.2012
Сообщений: 3
По умолчанию Двоичный поиск

Нужно написать программу, используя алгоритм двоичного поиска...количество символов в 1 строке:3...
Данные:
 - задан массив символов, элементы которого должны быть введены с клавиатуры;
 - результатом работы программы поиска является либо строка 'элемент найден', либо 'элемент не найден';
- символ для поиска должен вводиться с клавиатуры;
 - результат программы сортировки - исходный и отсортированный массивы;
 - программа должна быть зациклена, прекращение работы программы - нажатие <ESC>;
- количество элементов в массиве не менее 10.

Дополнительный теоретический материал:
Алгоритм двоичного поиска. Этот алгоритм широко применяется в системных программах и известен в литературе также и под другими названиями: бинарный, логарифмический, половинного деления и др. Идея его заключается в том, что ключ поиска на каждом шаге сравнивается с элементом,
расположенным в середине таблицы или ее части.
Если ключ поиска меньше "серединного" элемента, то "нижняя" часть таблицы из последующего рассмотрения исключается, и дальше алгоритм будет работать с "верхней" частью. В противном случае - будет исключаться "верхняя" часть и работа будет выполняться с "нижней". Для точного задания
алгоритма необходимо ввести две переменные: NG - нижнюю границу поиска и VG -верхнюю границу поиска. Перед началом поиска им присваиваются следующие значения: NG=1, VG=N. Номер элемента, расположенного в середине, определяется по формуле:
J = (VG + NG) / 2
Если ключ поиска X меньше "серединного" элемента Tj, то изменяется верхняя граница VG=j. Если наоборот - то нижняя граница: NG=j.
Annushka1 вне форума Ответить с цитированием
Старый 21.01.2012, 13:33   #2
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

Код:
uses crt;
var s:string;
	i,k,n:integer;
	c:char;
begin
	write('s:');
	readln(s);
	for i:=1 to Length(s)-1 do
	For k:= i+1 to Length(s) do
		if s[i]>s[k] then
			begin
				c:=s[i];
				s[i]:=s[k];
				s[k]:=c;
			end;
	write('символ :');
	readln(c);
	i:=1;n:=Length(s);
	k:= (n-i+1) div 2+i;
	while (n>i+1) and (s[k]<>c) do begin
		if s[k]>c then n:=k;
		if s[k]<c then i:=k;
		k:=((n-i+1) div 2) +i;
	end;
	writeln('отсортированная строка :',s);
	if s[k]=c then writeln('символ ',c,' найден #',k)
	else writeln('символ ',c,' не найден')
end.
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"
Mad_Cat вне форума Ответить с цитированием
Старый 22.01.2012, 11:47   #3
Annushka1
 
Регистрация: 20.01.2012
Сообщений: 3
По умолчанию

спасибо большое))
Annushka1 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Двоичный поиск mikebrownen Общие вопросы C/C++ 8 20.10.2011 22:44
Двоичный поиск mikebrownen Помощь студентам 8 22.09.2011 23:07
Двоичный поиск в массиве структур vistaman1 Общие вопросы C/C++ 2 28.05.2010 17:30
Двоичный поиск в Turbo C++ 3.0 Xeon332 Помощь студентам 3 29.01.2009 04:19
Двоичный поиск элемента в массиве (Си под DOS) Zid@ne Общие вопросы C/C++ 7 24.12.2008 18:07