uses Crt,Dos;
const ARRAYSIZE=10;
type arrayType=array[1..ARRAYSIZE] of integer;
var
A:arrayType;
i:integer;
c:integer;
n:integer;
procedure InsertionSort(Size:integer;var theArray:arrayType);
var
B:array[1..2*ArraySize]of integer;
mn,mx,c,d:word;
begin
B[Arraysize]:=A[1];
mn:=arraysize;
mx:=arraysize;
for i:=2 to ArraySize do
begin
if A[i]<B[ArraySize] then
begin
for d:=mn to ArraySize do
begin
if (B[d]<=A[i])and(mn<>Arraysize) then
B[d-1]:=B[d]
else begin
B[d-1]:=A[i];
break;
end;
end;
mn:=mn-1;
end
else
begin
for d:=mx downto ArraySize do
begin
if (B[d]>=A[i])and(mx<>ArraySize)then
B[d+1]:=B[d]
else begin
B[d+1]:=A[i];
break;
end;
end;
mx:=mx+1;
end;
end;
c:=0;
for i:=mn to mx do
begin
c:=c+1;
A[c]:=B[i];
end;
end;{InsertionSort}
procedure Vector(SIZE,MAX:integer;var theArray:arrayType);
var i:integer;
begin
randomize;
for i:=1 to SIZE do
theArray[i]:=random(MAX);
end;{Vector}
procedure PrintVector(SIZE,MAX:integer;var theArray:arrayType);
var i:integer;
begin
for i:=1 to SIZE do
Write(theArray[i],' ');
end;{Vector}
begin
ClrScr;
Write('N=');
Readln(n);
Vector(n,ARRAYSIZE,a);
PrintVector(n,ARRAYSIZE,a);
Writeln;
InsertionSort(n,a);
PrintVector(n,ARRAYSIZE,a); readln;
end.
работает при n=10 (по условию надо n<=50) и цифрах от 1 до 10...
если я правильно понимаю:
- при сортировке символов сортируются их коды - символы выводятся только на экран
- коды - от 0 до 127 (???)
почему же ее глючит при попытке вывести на экран символы (пробелы выдает, системник пищать начинает) или при изменении количества элементов (n)???
подскажите, ПЛЗ!