Условие задачи: Отсортировать одномерный массив линейным и пузырьковым способами. Каждый способ в отдельном модуле.
Вот что у меня получилось:
sort_1
Unit sort_1;
interface
Type
mas=array [1..10] of real;
var
m,k:integer;
b,d:mas;
procedure vvod_k (n:integer; var a:mas);
procedure obr_l (n:integer; a:mas; var c:mas);
procedure viv (n:integer; c:mas);
implementation
Uses Crt;
procedure vvod_k (n:integer; var a:mas);
var
i:integer;
begin
ClrScr;
For i:=1 to n do
ReadLn(a[i]);
end;
procedure obr_l (n:integer; a:mas; var c:mas);
var
i,j:integer;
x:real;
begin
ClrScr;
For i:=1 to n-1 do
For j:=i+1 to n do begin
If A[i]<A[j] then
begin
x:=a[i];
a[i]:=a[j];
a[j]:=x;
end;
c[i]:=a[i];
end;
end;
procedure viv (n:integer; c:mas);
var
i:integer;
begin
ClrScr;
For i:=1 to n do
WriteLn(c[i]);
end;
end.
sort_2
Unit sort_2;
interface
Type
mas=array [1..10] of real;
var
m,k:integer;
b,d:mas;
procedure vvod_r (n:integer; var a:mas);
procedure obr_p (n:integer; a:mas; var c:mas);
implementation
Uses Crt;
procedure vvod_r (n:integer; var a:mas);
var
i:integer;
begin
ClrScr;
Randomize;
For i:=1 to n do
begin
A[i]:=Random(100);
A[i]:=A[i]-Random(50);
A[i]:=A[i]/(Random(5)+1);
WriteLn(A[i]);
end;
end;
procedure obr_p (n:integer; a:mas; var c:mas);
var
i,j:integer;
x:real;
begin
For i:=2 to n do
For j:=n to i do begin
If A[j]>A[j-1] then
begin
x:=a[j-1];
a[j-1]:=a[j];
a[j]:=x;
end;
c[i]:=a[i];
end;
end;
end.
Сама программа:
Uses Crt, sort_1, sort_2;
begin
ClrScr;
Write('razmernost =');
ReadLn(m);
ClrScr;
Repeat
WriteLn('1 - vvod s klavi');
WriteLn('2 - vvod randomom');
WriteLn('3 - sort line');
WriteLn('4 - sort puz');
WriteLn('5 - vivod');
WriteLn('6 - vihod');
Write('Vash vibor... ');
ReadLn(k);
Case k of
1:vvod_k(m,b);
2:vvod_r(m,b);
3:obr_l(m,B,D);
4:orb_p(m,b,d);
5:viv(m,D);
6:halt;
end;
Until k>6;
ReadKey;
end.
Мне выдает ошибку на строчке
1:vvod_k(m,b);
Курсор на массиве b. Type mismatch.
Не понммаю в чем дело... Надеюсь на помощь.
Сообщение отредактировано: Dark Vova -