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 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
Amro
сообщение 22.10.2004 21:03
Сообщение #2


Пионер
**

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

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


Держи Вадим
Разбирайся!!!
Прога создаёт файл генерирует элементы и заносит их туда Далее файл читается из него беруться элементы и т.д и в конце в этот же файл заносится результат!!!
Код
uses crt;
const
L=1;
R=25;
var
i, Key, h : integer;
Mas : array[L..R] of integer;
ged : text;
{...........................................................}
procedure Sort(Left,Right:integer);
var
i, j, w, x:integer;
begin
i:=Left; j:=Right;
x:=Mas[(Left+Right) div 2];
repeat
 while (Mas[i]<x) do
     inc(i);
     while (x<Mas[j]) do
     dec(j);
 if i<=j then
            begin
            W:=Mas[i]; Mas[i]:=Mas[j]; Mas[j]:=W; inc(i); dec(j);
            end
until i>j;
if Left<j then Sort(Left,j);
  if (i<Right) then Sort(i,Right)
end;
{.............................................................}
Procedure found(Left,Right:integer);
var
middle:integer;
begin
 if (Left<=Right) then
    begin
    Middle:=(Left+Right) div 2;
      if  Key < Mas[Middle] then found(Left,Middle-1);
        if Key > Mas[Middle] then found(Middle+1,Right);
          if  Key=Mas[Middle] then Key:=Middle;
    end
                         else Key:=0;
end;
{...........................................................}
begin
Key:=0; randomize;
clrscr;

assign(ged,'c:\ged.txt');
rewrite(ged);
for i:=L to R do
   begin
    h:=random(99);
    write(ged,h:3);
   end;
writeln(ged);
close(ged);

reset(ged);
for i:=L to R do
   begin
    read(ged,h); mas[i]:=h; write(mas[i]:3)
   end;
writeln;
close(ged);

Sort(L,R);

append(ged);
 writeln(ged,'Отсортированный массив ');
 writeln('Отсортированный массив ');
 for i:=L to R do
   begin
   write(Mas[i]:3); write(ged,Mas[i]:3);
   end;

 writeln(ged);
 writeln;
 write('Введите искомый элемент: ');
 read(Key);
 write(ged,'Элемент ',key);
close(ged);

writeln;

found(L,R);

append(ged);
 writeln(ged);
   if key<>0 then
             begin
              write('Его номер ',Key); write(ged,'Его номер ',Key);
             end
                else
             begin
             write('Такого элемента нету!!!');
             write(ged,'Такого элемента нету!!!');
             end;
close(ged);
readkey;
end.

Тока чёт много всего написал!!! по-моему даже лишнего smile.gif

Сообщение отредактировано: Amro - 22.10.2004 21:12


--------------------
Закон иудеев: Семь раз отмерь, один отрежь.
Закон экономии: Семь раз отмерь, семь раз отрежь.
Закон программиста: Семь раз отрежь, ошибся, отмерь.
 Оффлайн  Профиль  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:40
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"