Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Бинарный поиск

Автор: abacus 18.05.2010 0:15

Значит, задача, надо было:
Сформировать целочисленный массив A[20], таким образом, что бы элементы массива принадлежали отрезку [-50, 50].
Выполнить в нём линейный поиск введенного с клавиатуры элемента.
Отсортировать массив методом вставки.
Выполнить бинарный поиск элемента.
В общем-то с заданием мне всё понятно, смущает лишь последняя ошибка над которой выносил мозги долгое время. Возникает в * ошибка 3 'неправильный тип',
я думаю что из-за d:=(i+j) div 2;

Прошу подскажите я знаю вы тут все добрые smile.gif .

Цитата
program labasem;
uses crt;
var a: array[1..20] of integer;
i,j,k,x,z,f: integer;
nl,nll,d: real;
begin
randomize;
for i:=1 to 20 do
a[i]:= random(50)-50;
readln(i);
while (i<=20) and (a[i]<>x) do inc(i);
writeln(a[i]);
for i:=2 to 20 do
begin
z:=a[i]; j:=1;
while (z>=a[j]) and (j<i) do inc(j);
for k:=i-1 downto j do a[k+1]:=a[k];
a[j]:=z;
end;
i:=1;
j:=20;
for f:=1 to 4 do
begin
d:=(i+j) div 2;
d:=round(d);
if * a[d]=x then writeln(d); else begin
if a[d]>x then i:=d; else j:=d; end;
end;
readkey;
end.

Автор: Ozzя 18.05.2010 13:13

a[d]=x 
и
d: real;

blink.gif
Вы шутите?
Индекс массива не может быть вещественного типа!

Добавлено через 6 мин.
nl,nll,d: real;

Замените на integer;

Автор: abacus 18.05.2010 21:19

оух, прошу прощенье, unsure.gif