Ahoj,
ve škole sme se učily třídění výběrem minima a maxima, když sem to doma přepsal do pascalu tak mi to netřídí. Pravděpodobně mam něco blbě v sešitě ale i když sem to krokoval a všechno, stejně nemůžu najít chybu. tady je kód:
program MINAMAX;
uses crt;
type POLE=array[0..10] of integer;
var A: POLE;
N,ZAMEN,POROVNANI: integer;
procedure ZAPISPOLE(N:integer;var A:POLE);
var I:integer;
begin
writeln('zadejte prvky');
FOR I:=1 to N do readln(A[I]);
end;
procedure VYPISPOLE(N:integer);
var I:integer;
begin
FOR I:=1 to N do write(A[I],' ');
end;
procedure MINMAX(N:integer; var A:POLE; var ZAMEN: integer; var POROVNANI: integer);
var I,DI,HI,MAXI,MINI,POM: integer;
begin
ZAMEN:=0;
POROVNANI:=0;
DI:=1;
HI:=N;
while DI<HI do
begin
I:=DI;
MAXI:=HI;
MINI:=DI;
for I:=DI to HI do if A[I]>A[MAXI] then A[MAXI]:=A[I];
for I:=DI to HI do if A[I]<A[MINI] then A[MINI]:=A[I];
POM:=A[MAXI];
A[MAXI]:=A[HI];
A[HI]:=POM;
if HI=MINI then MINI:=MAXI;
POM:=A[MINI];
A[MINI]:=A[HI];
A[HI]:=POM;
DI:=DI+1;
HI:=HI-1;
end;
end;
begin
clrscr;
writeln('=====================================================');
writeln('TRIDENI MINIMEM A MAXIMEM');
writeln('zadejte pocet prvku: ');
readln(N);
ZAPISPOLE(N,A);
writeln('zadane prvky: ');
VYPISPOLE(N);
writeln(' ');
MINMAX(N,A,ZAMEN,POROVNANI);
writeln('setridene pole: ');
VYPISPOLE(N);
writeln(' ');
writeln('pocet zamen: ',ZAMEN);
writeln('pocet porovnani: ',POROVNANI);
writeln('=====================================================');
readln;
end.