Top.Mail.Ru
Ответы

Тип параметра или возвращаемого значения не может быть описанием записи или описанием массива с границами

я не понимаю где ошибка все вроде правильна написано 'Быстрая сортировка масcива' pascal abc
uses crt;
const n=7;
var A: array[1..n] of integer;
first, last, i: integer;
{процедура сортировки}
procedure quicksort(var mas: array[1..n] of integer; first, last: integer);
var f, l, mid, count: integer;
begin
f:=first;
l:=last;
mid:=mas[(f+l) div 2]; {вычисление опорного элемента}
repeat
while mas[f]mid do dec(l);
if f<=l then {перестановка элементов}
begin
count:=mas[f];
mas[f]:=mas[l];
mas[l]:=count;
inc(f);
dec(l);
end;
until f>l;
if first<l then quicksort(A, first, l);
if f<last then quicksort(A, f, last);
end;
{основной блок программы}
begin
clrscr;
randomize;
write('Исходный массив: ');
for i:=1 to n do
begin
A[i]:=random(10);
write(A[i]:2);
end;
first:=1; last:=n;
quicksort(A, first, last);
writeln; write('Результирующий массив: ');
for i:=1 to n do
write(A[i]:2);
end.

По дате
По рейтингу
Аватар пользователя
Гений
6лет

Не правильно написано, о чем компилятор вам и сообщает: тип параметра не может быть описанием массива с границами, что имеет место у вас. И еще, если вы думаете, что переменная
A: array[1..n] of integer; и формальный параметр процедуры mas: array[1..n] of integer; имеют одинаковый тип, то вы глубоко заблуждаетесь.

Объявите свой тип

type MyArray = array[1..n] of integer;

а затем используйте его при объявлении переменной и формального параметра.

var A : MyArray;

procedure quicksort(var mas: MyArray; first, last: integer);