Я получаю эту ошибку в моем алгоритме сортировки вставками:
insertionsort.lpr(19,17) Ошибка: несовместимые типы: получено "логическое значение", ожидалось "LongInt"
Вот строка 19 моего кода
while j > 0 and A[j]>key do
Я пробовал гуглить по всему Интернету, но не смог найти никаких синтаксических ошибок или чего-то еще.
Вот полный код, если поможет:
program instert;
uses crt;
const
N = 5;
var
i:integer;
j:integer;
key:integer;
A : Array[1..N] of Integer;
procedure insertionsort;
begin
for i := 2 to N do
begin
key := A[1];
j:= i - 1;
while j > 0 and A[j]>key do
begin
A[j+1] := A[j] ;
j := j-1;
end;
A[j+1] := key ;
end;
end;
begin
A[1]:= 9;
A[2]:= 6;
A[3]:= 7;
A[4]:= 1;
A[5]:= 2;
insertionsort;
end.
Я также получаю ту же ошибку в алгоритме пузырьковой сортировки, который я сделал. Вот строка ошибки
bubblesort.lpr(26,14) Ошибка: несовместимые типы: получено "логическое значение", ожидалось "LongInt"
Вот строка 26 моего алгоритма:
until flag = false or N = 1 ;
Вот полный код:
program bubblesort;
uses crt;
var
flag:boolean;
count:integer;
temp:integer;
N:integer;
A : Array[1..N] of Integer;
procedure bubblesort ;
begin
Repeat
flag:=false;
for count:=1 to (N-1) do
begin
if A[count] > A[count + 1] then
begin
temp := A[count];
A[count] := A[count + 1];
A[count] := temp;
flag := true;
end;
end;
N := N - 1;
until flag = false or N = 1 ;
end;
begin
A[1]:= 9;
A[2]:= 6;
A[3]:= 7;
A[4]:= 1;
A[5]:= 2;
N := 5;
bubblesort;
end.
>
имеет более низкий приоритет, чемand
, поэтому используйте круглые скобки:while (j > 0) and (A[j]>key) do
. Точно так же вам нужноuntil (flag = false) or (N = 1) ;
(или простоuntil not flag or (N = 1) ;
) - person lurker   schedule 24.01.2015