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

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

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

> двоичный поиск
maksimla
сообщение 3.12.2008 19:46
Сообщение #1


Знаток
****

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

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


Задание
Предположим, имеем первичных цифр массив. Напишите функцию, реализующую алгоритм двоичного поиска в таком массиве. Результаты функции - элемент массива, который равен функции аргументу, номер или 0.


я так непонел результаты какие надо вывести пример можете написать


--------------------
Учусь первый год на программиста в колледже. Учусь на втором курсе в школе программирования при научно-исследовательском институте математики и информатики.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
maksimla
сообщение 13.10.2009 16:04
Сообщение #2


Знаток
****

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

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


а теперь процедуру сказали сделать я сделал но одна ошибка есть. Ошибку не нашел но добавил единицу и все в порядке можете сказать что не так я сделал?

это двоичный поиск

program rasti;
const max=100;
type masyv=array [1..max] of integer;
var x:masyv;
a,n,i:integer;
c:text;
procedure poisk(m:masyv; max,j:integer);
var tr:boolean; i1,i2:integer;
begin
tr:=false;
i1:=1; i2:=max+1;
while (i1<i2) and (not tr) do
begin i:=(i1+i2)div 2;
if x[i]=a then tr:=true
else if x[i]<a then i1:=i+1
else i2:=i;
end;
if not tr then
writeln('v masyve x cisla ',a,' netu')
else
writeln('Skaiciui ',a,' lygus ',i,' masyvo narys');
end;

begin
assign(c,'test.txt');
Reset©;
Readln(c,n);
for i:=1 to n do
begin
read(c,x[i]);
writeln(i:4,' ',x[i]);
end;
write('vvedite iskomoe cislo ');
readln(a);
poisk(x,n,a);
readln
end.


числа записаны в файл в возвращающем порядке и если в поиск вводишь самое последнее число то оно не находится при в процедуре i2:=max а если плюс один то все в порядке странно можете объяснить что не так я сделал.


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

Сообщений в этой теме


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

 



- Текстовая версия 20.07.2025 3:03
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"