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 поставь Цитата Ссылка на комментарий
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.