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

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

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

> Рекурсии
сообщение
Сообщение #1





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

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


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

Сообщение отредактировано: Вадим -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #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 -


--------------------
Закон иудеев: Семь раз отмерь, один отрежь.
Закон экономии: Семь раз отмерь, семь раз отрежь.
Закон программиста: Семь раз отрежь, ошибся, отмерь.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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


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

 





- Текстовая версия 12.09.2025 15:48
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name