IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Рекурсии
Вадим
сообщение 10.10.2004 21:09
Сообщение #1





Группа: Пользователи
Сообщений: 4
Пол: Мужской

Репутация: -  0  +


Помогите написать программу.
Разработать рекурсивную процедуру двоичного поиска элемента массива, равного данному числу.

Сообщение отредактировано: Вадим - 10.10.2004 21:10
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
fms
сообщение 11.10.2004 0:07
Сообщение #2


Бывалый
***

Группа: Пользователи
Сообщений: 195
Пол: Женский

Репутация: -  0  +


двоичный т.е. бинарный? smile.gif
со строками.. smile.gif ну можно ведь и для чесел переделать..


Код
PROGRAM prog;
FUNCTION b_search(s: STRING; a,b: INTEGER; c: CHAR): INTEGER;
    VAR i: INTEGER;
    BEGIN
 IF a>b THEN b_search:=0 ELSE
 BEGIN
 i:=(a+b) DIV 2;
 IF s[i]=c THEN b_search:=i
 ELSE  IF s[i]<c THEN b_search:=b_search(s,i+1,b,c)
 ELSE b_search:=b_search(s,a,i-1,c);
 END
 END;
    VAR
 s:STRING;
 i:INTEGER;
 c:CHAR;
    BEGIN
 WRITE('Введите строку:');
 READLN(s);
 b:= ORD(s[0]); {Длина строки}
 i:=0; {Это проверка упорядоченности символов в строке}
 REPEAT
     i:=i+1;
 UNTIL (a[i+1]<a[i]) or (i= b-1); {Конец проверки строки}
    IF a[i+1]<a[i] THEN WRITELN('Строка введена неправильно')
 ELSE BEGIN
     WRITE('Введите искомый символ:');
     READLN( c );
     i:=b_search(s,1,ORD(s[0]),c);
 IF i=0 THEN WRITELN('Искомого символа в строке нет')
 ELSE WRITELN('Искомый символ имеет номер ', i);
 END;
    END.



--------------------
непонимающая..
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
Вадим   Рекурсии   10.10.2004 21:09
Amro   А массив уже упорядочен чтоль, или его ещё сортиро...   10.10.2004 21:31
Вадим   Условие точное, но скорее всего массив надо сортир...   10.10.2004 21:43
godd   что такое двоичный поиск? поиск двоичного числа? и...   10.10.2004 22:32
Amro   Нет godd это не поиск двоичного числа это поиск ...   10.10.2004 23:27
fms   двоичный т.е. бинарный? :) со строками.. :) ну мож...   11.10.2004 0:07
godd   скорость поиска увеличиться? ну разве что в отсорт...   11.10.2004 0:17
godd   посчет времени - рекурсия это вообще дело нехороше...   11.10.2004 1:18
Amro   Я в общем тоже времени не терял, написал тут одну ...   11.10.2004 1:27
godd   недоглядел в тексте Amro. Не то написал. Удалить п...   11.10.2004 1:35
godd   Amro по поводу рекурсии - это я прочитал где-то.   11.10.2004 1:36
godd   Недоглядел я. Ему ж процедура нужна была. А я врод...   11.10.2004 1:46
Amro   Ты прав надо сравнивать только с крайним элементом...   11.10.2004 1:49
Amro   Во во я также сначала функцией пытался сделать, то...   11.10.2004 1:52
godd   мона. вначале проги randomize ставишь, а элементы...   11.10.2004 9:14
Guest   Как сделать, чтобы исходные данные вводились из те...   21.10.2004 20:54
Amro   Создаешь текстовый файл, заносишь туда данные при ...   21.10.2004 21:23
Гость_Вадим   Amro, если будет не в лом, то доделай, пожалуйста   21.10.2004 21:34
Amro   Держи Вадим Разбирайся!!! Прога созд...   22.10.2004 21:03


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 20.07.2025 18:16
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"