![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
Вадим |
![]()
Сообщение
#1
|
Группа: Пользователи Сообщений: 4 Пол: Мужской Репутация: ![]() ![]() ![]() |
Помогите написать программу.
Разработать рекурсивную процедуру двоичного поиска элемента массива, равного данному числу. Сообщение отредактировано: Вадим - |
![]() ![]() |
Amro |
![]()
Сообщение
#2
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 146 Пол: Мужской Репутация: ![]() ![]() ![]() |
Держи Вадим
Разбирайся!!! Прога создаёт файл генерирует элементы и заносит их туда Далее файл читается из него беруться элементы и т.д и в конце в этот же файл заносится результат!!! Код 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. Тока чёт много всего написал!!! по-моему даже лишнего ![]() Сообщение отредактировано: Amro - -------------------- Закон иудеев: Семь раз отмерь, один отрежь.
Закон экономии: Семь раз отмерь, семь раз отрежь. Закон программиста: Семь раз отрежь, ошибся, отмерь. |
![]() ![]() |
![]() |
Текстовая версия | 12.09.2025 15:48 |