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 ой спасибо большое точно Ссылка на комментарий
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 числами Ссылка на комментарий
piecemaker Опубликовано 23 мая, 2013 Жалоба Поделиться Опубликовано 23 мая, 2013 Да размерность массива Ссылка на комментарий
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 поставь Ссылка на комментарий
Рекомендуемые сообщения
Пожалуйста, войдите, чтобы комментировать
Вы сможете оставить комментарий после входа в
Войти