Модераторы: volvo877, Snowy, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Доведение до ума процедуры, двоичного поиска 
V
    Опции темы
VingradFan
Дата 18.5.2007, 02:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 477
Регистрация: 30.1.2006
Где: Москва

Репутация: нет
Всего: 3



Всем привет, подскажите пожалуйста почему не работает процедура двоичного поиска Search. Она выдает несусветные номера элементов. Выкладываю на всякий случай всю прогу.
Код

program progr;
uses crt;
type
aray=array [1..100]  of integer
{\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\}
;procedure fill_in (length:integer; var massiv:aray)
;var i:integer
;begin
randomize
;for i:=1 to length do
massiv[i]:=random(100)
end
{\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\}
;procedure sort (length:integer; var massiv:aray)
;var i,j,buffer:integer
;begin
;for i:=1 to length-1 do
for j:=i+1 to length do
if massiv[i]>massiv[j] then begin
buffer:=massiv[i]
;massiv[i]:=massiv[j]
;massiv[j]:=buffer
end
end
{\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\}
;procedure output (length:integer; massiv:aray)
;var i:integer
;begin
;for i:=1 to length do
write(' | ',massiv[i],' | ')
end
{\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\}
;procedure search (value,length:integer; massiv:aray; var result:integer)
;var cent,min,max:integer
;found:boolean
;begin
min:=1
;max:=length
found:=false
;repeat
 cent:=(min+max) div 2
 ;if value>massiv[cent] then min:=cent+1
 else if value<massiv[cent] then  max:=cent-1
 else found:=true
until found or (min>max)
 ;if found then begin
 result:=cent
 ;write(value,'=a[',result,']') end
 else write('The is no element with such value')
;end
{\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\}
;var result,value,length:integer
;massiv:aray
;begin
clrscr
;result:=0
;writeln('Fill in the length of the array: ')
;readln(length)
;fill_in(length,massiv)
;sort(length,massiv)
;output(length,massiv)
;writeln
;writeln('Fill in the value of the element to search for: ')
;readln(value)
;search(value,length,massiv,result)
;repeat until keypressed;
end.



Это сообщение отредактировал(а) VingradFan - 18.5.2007, 13:49


--------------------
Когда-нибудь я стану богатым и куплю себе столько Ролтонов, сколько захочу...
PM MAIL WWW ICQ   Вверх
volvo877
Дата 18.5.2007, 02:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2073
Регистрация: 15.11.2004

Репутация: 2
Всего: 116



Цитата(VingradFan @  18.5.2007,  02:04 Найти цитируемый пост)
почему не работает процедура двоичного поиска Search.


Цитата(VingradFan @  18.5.2007,  02:04 Найти цитируемый пост)
Код

 cent:=(min+max) div 2
А значения min/max, кстати, не инициализированы, переменные - локальные, содержат мусор... Вот тебе и "несусветные" результаты...
PM MAIL   Вверх
VingradFan
Дата 18.5.2007, 02:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 477
Регистрация: 30.1.2006
Где: Москва

Репутация: нет
Всего: 3



 smile всегда чтото забываю
исправил...
всеравно не работает...
чтобы я не ввел он находит такой элемент...

Это сообщение отредактировал(а) VingradFan - 18.5.2007, 02:26


--------------------
Когда-нибудь я стану богатым и куплю себе столько Ролтонов, сколько захочу...
PM MAIL WWW ICQ   Вверх
ama_kid
Дата 18.5.2007, 12:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


АСУТП-кодер
***


Профиль
Группа: Комодератор
Сообщений: 1460
Регистрация: 5.3.2007
Где: Москва

Репутация: нет
Всего: 95



а found:=false перед циклом не надо делать?


--------------------
самурай без меча подобен самураю с мечом, но только без меча 
PM MAIL   Вверх
VingradFan
Дата 18.5.2007, 13:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 477
Регистрация: 30.1.2006
Где: Москва

Репутация: нет
Всего: 3



Цитата(ama_kid @ 18.5.2007,  12:34)
а found:=false перед циклом не надо делать?

Спасибо за помощь smile
все заработало


--------------------
Когда-нибудь я стану богатым и куплю себе столько Ролтонов, сколько захочу...
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi"
THandle
Rrader
volvo877

Запрещается!

1. Обсуждать и делится взломанными компонентами или программным обеспечением

2. Публиковать ссылки на варез

3. Оффтопить

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, THandle, Rrader, volvo877.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Object Pascal: кроссплатформенные технологии | Следующая тема »


 




[ Время генерации скрипта: 0.0512 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.