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

bazadima

Пользователи
  • Постов

    3
  • Зарегистрирован

  • Посещение

Сообщения, опубликованные bazadima

  1. 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

  2. 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;

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

×
×
  • Создать...