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