Перейти к содержанию

помгите найти ошибочку (паскаль)


Рекомендуемые сообщения

uses crt;

const n=1000;

n1=10000;

var A:array[1..10001] of integer;

p1,p2,p3,p4,p5,p6,p7,p8,i,b1,b2,b3,left,right,m,t:integer;

begin

clrscr;

writeln ('введите ключ 0-1000'); read (b1);

writeln ('введите ключ 0-10000'); read (b2);

writeln ('возьмем ключ равный 10001, для неудачного поиска'); read (b3)

{бинарный поиск на 1000 элементов}

for i:=1 to n do a:=i;

Left:=0; Right:=N;

p1:=2;

while Left

begin

m:=(Left+Right) div 2; p1:=p1+1;

if A[m]

else Right:=m;

end;

{бинарный поиск на 1000 элементов}

for i:=1 to n do a:=i;

Left:=0; Right:=N;

p2:=2;

while Left

begin

m:=(Left+Right) div 2; p2:=p2+1;

if A[m]

else Right:=m;

end;

{бинарный поиск на 10000 элементов}

for i:=1 to n do a:=i;

Left:=0; Right:=N;

p3:=2;

while Left

begin

m:=(Left+Right) div 2; p3:=p3+1;

if A[m]

else Right:=m;

end;

{бинарный поиск на 10000 элементов}

for i:=1 to n do a:=i;

Left:=0; Right:=N;

p3:=2;

while Left

begin

m:=(Left+Right) div 2; p4:=p4+1;

if A[m]

else Right:=m;

end;

{последовательный поиск на 1000}

for i:=1 to n do a:=i;

p5:=1;

A[N+1]:=b1; {стоппер}

i:=1;

while A<>b1 do

begin

i:=i+1;

p5:=p5+1;

end;

{последовательный поиск на 1000}

for i:=1 to n do a:=i;

t1:=1;

A[N+1]:=b3; {стоппер}

i:=1;

while A<>b3 do

begin

i:=i+1;

p6:=p6+1;

end;

{последовательный поиск на 10000}

for i:=1 to n do a:=i;

t1:=1;

A[N+1]:=b2; {стоппер}

i:=1;

while A<>b2 do

begin

i:=i+1;

p7:=p7+1;

end;

{последовательный поиск на 10000}

for i:=1 to n do a:=i;

t1:=1;

A[N+1]:=b3; {стоппер}

i:=1;

while A<>b3 do

begin

i:=i+1;

p8:=p8+1;

end;

writeln ('удачная');

writeln ('|bin1000|bin10000|posl1000|posl10000|')

writeln ('|',p1,' |',p3,' |',p5,' |',p7,' |');

writeln ('неудачная');

writeln ('|bin1000|bin10000|posl1000|posl10000|')

writeln ('|',p2,' |',p4,' |',p6,' |',p8,' |');

readkey;

end.

в самом начале выходит ошибка "ожидался оператор" при вводе for i:=1 to n do a:=i;

не подскажете почему

Ссылка на комментарий

uses crt;

const n = 1000; n1 = 10000;

var

a:array[1..n] of integer;

i,j,x,buf,m,l1,l11,l111,l2,l22,l222,l3,l33,l333,l4,l44,l444,l5,l55,l555,l6,l66,l666:integer;

d,k:byte;

begin

clrscr;

{bubble 1000}

for i:=1 to n do

a:=random(1000);

l1:=0; l11:=0;

for i:=1 to n-1 do

for j:=i+1 to n do

if a>a[j] then

begin

l1:=l1+1;

buf:=a;

a:=a[j];

a[j]:=buf;

l11:=l11+3;

end;

l111:=l1+l11;

{bubble 10000}

for i:=1 to n1 do

a:=random(1000);

l2:=0; l22:=0;

for i:=1 to n1-1 do

for j:=i+1 to n1 do

if a>a[j] then

begin

l2:=l2+1;

buf:=a;

a:=a[j];

a[j]:=buf;

l22:=l22+3;

end;

l222:=l2+l22;

{shaker 1000}

for i:=1 to n do a:=random(1000);

d:=1; i:=0;

for k:=n-1 downto 1 do

begin

i:=i+d; l33:=l33+1;

for j:=1 to k do

begin

if (A-A[i+d])*d>0 then

begin l3:=l3+1; x:=A; A:=A[i+d]; A[i+d]:=x; l33:=l33+1; end;

i:=i+d; l33:=l33+1;

end;

d:=-d; l33:=l33+1;

end;

l333:=l3+l33;

{shaker 10000}

for i:=1 to n1 do a:=random(1000);

d:=1; i:=0;

for k:=n1-1 downto 1 do

begin

i:=i+d; l44:=l44+1;

for j:=1 to k do

begin

if (A-A[i+d])*d>0 then

begin l4:=l4+1; x:=A; A:=A[i+d]; A[i+d]:=x; l44:=l44+1; end;

i:=i+d; l44:=l44+1;

end;

d:=-d; l44:=l44+1;

end;

l444:=l4+l44;

{выбор 1000};

write('количество элементов массива ');

for i:=1 to n do a:=random (1000); l5:=0; l55:=1;

for k:=n downto 2 do

begin

m:=1;

for i:=2 to k do if A>A[m] then m:=i;

x:=A[m]; A[m]:=A[k]; A[k]:=x; l5:=l5+1; l55:=l55+4;

end; l555:=l5+l55;

{выбор 10000}

write('количество элементов массива ');

for i:=1 to n1 do a:=random (1000); l6:=0; l66:=1;

for k:=n1 downto 2 do

begin

m:=1;

for i:=2 to k do if A>A[m] then m:=i;

x:=A[m]; A[m]:=A[k]; A[k]:=x; l6:=l6+1; l66:=l66+4;

end; l666:=l6+l66;

writeln (' |bub1000|bub10000|shk1000|shk10000|vib1000|vib10000|');

writeln ('сравнений |',l1,'|',l2,'|',l3,'|',l4,'|',l5,'|',l6,'|');

writeln ('присваив |',l11,'|',l22,'|',l33,'|',l44,'|',l55,'|',l66,'|');

writeln ('операций |',l111,'|',l222,'|',l333,'|',l444,'|',l555,'|',l666,'|');

readkey;

end.

помогите снова найти ошибку, пишет где жирным выделено выход за границы диапозона 1..1000

Ссылка на комментарий
a:array[1..n] of integer;

Массив определен как 1000 позиций

for i:=1 to n1 do a:=random(1000);

А работаешь как с 10 000

Добавлено спустя 48 секунд:

вместо n1 просто n поставь

Ссылка на комментарий

Пожалуйста, войдите, чтобы комментировать

Вы сможете оставить комментарий после входа в



Войти
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...