bazadima Опубликовано 23 мая, 2013 Жалоба Опубликовано 23 мая, 2013 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;beginclrscr;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;не подскажете почему
piecemaker Опубликовано 23 мая, 2013 Жалоба Опубликовано 23 мая, 2013 после read(b3) нет точки с запятой
bazadima Опубликовано 23 мая, 2013 Автор Жалоба Опубликовано 23 мая, 2013 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;beginclrscr;{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
NAT Опубликовано 23 мая, 2013 Жалоба Опубликовано 23 мая, 2013 хз, у тебя массив из n = 1000 чисел, а ты заполняешь его n1 = 10000 числами
Intel_agent Опубликовано 23 мая, 2013 Жалоба Опубликовано 23 мая, 2013 a:array[1..n] of integer;Массив определен как 1000 позицийfor i:=1 to n1 do a:=random(1000);А работаешь как с 10 000Добавлено спустя 48 секунд:вместо n1 просто n поставь
Рекомендуемые сообщения
Пожалуйста, войдите, чтобы комментировать
Вы сможете оставить комментарий после входа в
Войти