Практика программирования (Бейсик, Си, Паскаль)



         

Задачи, советы и ответы - часть 9


=====================================}

uses Crt;

label m;

var

i,j,k,xod:byte;

a:array [0..7,0..7] of shortint;

procedure try(p,q:integer);

{=================================

Попытка совершить ход уровня k+1 в позицию (p,q). При возможности хода в а[р,q] заносится номер уровня, а в переменную xod - значение 1. В противном случае переменная xod остается равной 0.

==================================}

begin

if (p>=0) and (p<8) and (q>=0) and (q<8) and (a[p,q]<0) then

begin a[p,q]:=k+l; xod:=l; end; end;

procedure newlevel;

{================================

Поиск всех ходов уровня k+1 из клеток, достигнутых за k ходов

================================}

const

{смещения по индексам i,j для 8 возможных ходов коня}

di:array [0..7] of integer = (-2,-2,-1,-1, 1,1, 2,2);

dj:array [0..7] of integer = (-1, l,-2, 2,-2,2,-1,1); var

f:byte; begin

xod:=0; {Гашение признака возможности совершить ход}

{Поиск полей, достигаемых на k-том уровне)

for i:=0 to 7 do

for j:=0 to 7 do

if a[i,j]=k then

{Если поле найдено, из него делаются попытки сходить по 8 возможным направлениям}

for f:=0 to 7 do try(i+di[f],j+dj[f]);

k:=k+l;

{Повышение уровня хода}

end;

begin

k:=0; {Уровень хода} clrscr;

for i:=0 to 7 do

for j:=0 to 7 do

a[i,j]:=-1; {Начальная роспись матрицы позиций}

write('Задайте начальную позицию : '};

readln(i,j);

a[i,j]:=0; (Отметка начальной позиции)

m: newlevel;

{На поиск ходов следующего уровня}

if xod=l then goto m; {Если поиск был завершен успешно} {Цикл вывода заполненной матрицы с уровнями ходов}

for i:=0 to 7 do

begin

for j:=0 to 7 do

write (a[i,j]:3);

writeln;

end;

readln;

end.

Задание 4.07. Сравнение методов сортировки

Составить программу тестирования методов сортировки, приведенных выше. Предполагается, что тестовая программа будет генерировать случайным образом целочисленный массив достаточно большого размера, например содержащий 15 000 элементов. Для чистоты эксперимента каждому методу должен задаваться один и тот же исходный массив, т. е. не надо прибегать к процедуре randomize. В начале и конце работы программы сортировки необходимо зафиксировать показания системных часов, по разности которых можно судить о быстродействии того или иного алгоритма на данном компьютере.




Содержание  Назад  Вперед