(обязательное)
//Курсовой проект
//на тему: Нечисленная обработка данных (сортировка и поиск)
//выполнила: студентка группы ДМ1-44 Жубатканова Айгерим
program KursSort;
type PNode = ^TNode;{тип для указателя на TNode}
TNode = record {структура под узел дерева}
val: Integer; {значение}
L, R: PNode; {указатель на левое и правое поддерево}
end;
var{объявление переменных}
F: Text; {файловая переменная}
mas: array of Integer; {массив n элементов}
n: integer;{количество элементов в массиве mas}
m: Integer;
masissort: boolean;{был ли отсортирован массив}
{============= ОПИСАНИЕ ПРОЦЕДУР ==============================================}
{Процедура формирования меню}
procedure Menu;
begin writeln;
writeln('Меню:');
writeln(' 1-создание нового массива');
writeln(' 2-показать исходный массив');
writeln(' 3-линейный поиск элемента в массиве');
writeln(' 4-двоичный поиск элемента в массиве');
writeln(' 5-сортировка массива методом пузырька');
writeln(' 6-сортировка массива с помощью двоичного дерева');
writeln(' 0-выход из программы');
write('> ');
end;
{------------------------------------------------------------------------------}
{1-создание нового массива
(использует глобальные переменные F, mas, n)}
procedure CreateMas();
var genAvto: Boolean; {метод создания массива: вручную, автоматически }
y, i: Integer;
begin {очистим массив}
SetLength(mas, 0);
{спросим сколько элементов создать}
writeln('Введите кол. элементов (от 1 до 15 или выше возможно 16, 128, 512, 1024):');
readln(n);
{коррекция допустимой длины массива}
if n < 1 then n := 1
else if (n > 15) and (n < 128) then n := 16
else if (n > 128) and (n < 512) then n := 128
else if (n > 512) and (n < 1024) then n := 512
else if (n > 1024) then n := 1024;
WriteLn(F, 'Создание массива n = ', n);
WriteLn('Создание массива n = ', n);
{создаем динамический массив (индексация с 0 до n-1)}
SetLength(mas, n);
genAvto := True; {метод создания массива: вручную, автоматически }
{заполняем массив вручную если n <= 16}
if n <= 16 then begin {спросим будем ли вручную генерировать}
write('Ввести массив с клавиатуры (1-да, 0-нет)?: ');
readln(y);
genAvto := y = 0;
end;
{заполнение данными массива}
for i := 0 to n - 1 do begin if genAvto then mas[i] := random(1000) {число от 0 до 999}
else {иначе предложить ввести пользователю}
begin write('mas[', i, '] = ');
readln(mas[i]);
end;
end;
end;
{------------------------------------------------------------------------------}
{2-показать исходный массив
(использует глобальные переменные F, mas, n)}
procedure ShowMas();
var i: Integer;
begin Writeln(F, 'Элементы массива:');
Writeln('Элементы массива:');
if n > 0 then