Created
October 13, 2019 11:44
-
-
Save MarshalX/f4b9b3b59121a2c1d074f696fefa2422 to your computer and use it in GitHub Desktop.
Merge sort on Pascal
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
program merge_sort; | |
const | |
n = 10; | |
var | |
mas: array [1..n] of integer; | |
i: integer; | |
procedure MergeSort(a, c: integer); | |
var | |
x, j, i, n1, n2: integer; | |
rez: array[1..1000] of integer; | |
begin | |
if c <= a then | |
exit | |
else | |
begin | |
x := (a + c) div 2; | |
MergeSort(a, x); | |
MergeSort(x + 1, c); | |
n1 := a; | |
n2 := x + 1; | |
for i := a to c do | |
begin | |
if (n1 < x + 1) and ((n2 > c) or (mas[n1] < mas[n2])) then | |
begin | |
rez[i] := mas[n1]; | |
inc(n1); | |
end | |
else | |
begin | |
rez[i] := mas[n2]; | |
inc(n2); | |
end; | |
end; | |
for j := a to c do | |
mas[j] := rez[j]; | |
end; | |
end; | |
begin | |
for i := 1 to n do | |
mas[i] := random(20); | |
writeln(mas); | |
MergeSort(1, n); | |
writeln(mas); | |
end. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
program perhalamanvt;
uses crt;
var
kode : array [1..4] of String ;
nama : array [1..4] of string ;
hrg, jmlbl : array [1..4] of LongInt ;
jmlhrg, diskon, jmlbyr : array [1..4] of Real;
sjmlhrg, sdiskon, sjmlbyr : array [1..4] of Real ;
tjmlhrg, tdiskon, tjmlbyr : array [1..4] of Real ;
i, j: Integer ;
brs, hal : integer ;
temp: real;
procedure JudulLap;
begin
writeln('Data belum urut') ;
WriteLn('');
WriteLn('Laporan Penjualan Online');
WriteLn('PT. Kuda Laut Semarang');
WriteLn(' Halaman:',hal,3) ;
WriteLn('-------------------------------------------') ;
WriteLn() ;
GotoXY(0,15); Write('no.');
GotoXY(5,15); Write('kode');
GotoXY(10,15); Write('nama');
GotoXY(20,15); Write('harga');
GotoXY(27,15); Write('jml');
GotoXY(36,15); Write('jml');
GotoXY(45,15); Write('diskon');
GotoXY(55,15); Write('jml');
GotoXY(5, 16) ;write('Oli') ;
GotoXY(20,16); Write('bl');
GotoXY(36,16); Write('harga');
GotoXY(55,16); Write('bayar');
GotoXY(0, 17) ;Write('-------------------------------------------') ;
WriteLn() ;
end;
begin
clrscr;
for i:=1 to 4 do
begin
clrscr;
if brs >3 then
begin
GotoXY(0, 18+brs) ;writeln('-------------------------------------------') ;
GotoXY(5, 19+brs) ;WriteLn('SubTotal') ;
GotoXY(36, 19+brs) ;write(sjmlhrg[i]:0) ;
GotoXY(45, 19+brs) ;write(sdiskon[i]:0) ;
GotoXY(55, 19+brs) ;write(sjmlbyr[i]:0) ;
GotoXY(0, 20+brs) ;writeln('-------------------------------------------') ;
readkey;
sjmlhrg[i]:=0 ; sdiskon[i]:=0 ; sjmlbyr[i]:=0 ;
hal:=hal+1;
brs:=brs+1;
clrscr;
JudulLap;
end;
WriteLn('Masukkan Data ke:',i);
Write('Masukkan kode(huruf kapital):') ; ReadLn(kode[i]);
Write('jmlbl:') ;ReadLn(jmlbl[i]);
if kode[i] ='S' then nama[i] :='Shell' else
if kode[i] ='C' then nama[i] :='Castrol' else
if kode[i] ='M' then nama[i] :='BM1' else
if kode[i] ='E' then nama[i] :='Enduro' ;
if kode[i] ='S' then hrg[i] :=45000 else
if kode[i] ='C' then hrg[i] := 50000 else
if kode[i] ='M' then hrg[i] := 60000 else
if kode[i] ='E' then hrg[i] := 35000 ;
jmlhrg[i]:= jmlbl[i] * hrg[i] ;
if jmlbl[i] >=9 then
diskon[i]:= 15/100*jmlhrg[i]
else if jmlbl[i] >=6 then
diskon[i]:= 10/100*jmlhrg[i]
else if jmlbl[i] <=6 then
diskon[i]:=0 ;
jmlbyr[i]:= jmlhrg[i]-diskon[i] ;
sjmlhrg[i]:=0 ; sdiskon[i]:=0 ; sjmlbyr[i]:=0 ;
tjmlhrg[i]:=0 ; tdiskon[i]:=0 ; tjmlbyr[i]:=0 ;
writeln('')
end;
clrscr;
brs:=1;
hal:=1;
JudulLap;
for i:= 1 to 4 do
begin
GotoXY(0, 17) ;write(i:3) ;
GotoXY(5, 17+brs) ;write(kode[i]) ;
GotoXY(10, 17+brs) ;write(nama[i]) ;
GotoXY(20, 17+brs) ;write(hrg[i]) ;
GotoXY(27, 17+brs) ;write(jmlbl[i]) ;
GotoXY(36, 17+brs) ;write(jmlhrg[i]) ;
GotoXY(45, 17+brs) ;write(diskon[i]) ;
GotoXY(55, 17+brs) ;write(jmlbyr[i]) ;
sjmlhrg[i]:=sjmlhrg[i] + jmlhrg[i] ;
sdiskon[i]:=sdiskon[i] + diskon[i] ;
sjmlbyr[i]:=sjmlbyr[i] + jmlbyr[i] ;
tjmlhrg[i]:=tjmlhrg[i] + jmlhrg[i] ;
tdiskon[i]:=tdiskon[i] + diskon[i] ;
tjmlbyr[i]:=tjmlbyr[i] + jmlbyr[i] ;
brs :=brs+1;
end;
GotoXY(0, 18+brs) ;writeln('-------------------------------------------') ;
GotoXY(5, 19+brs) ;WriteLn('SubTotal') ;
GotoXY(36, 19+brs) ;write(sjmlhrg[i]:0) ;
GotoXY(45, 19+brs) ;write(sdiskon[i]:0) ;
GotoXY(55, 19+brs) ;write(sjmlbyr[i]:0) ;
GotoXY(5, 20+brs) ;WriteLn('Total') ;
GotoXY(36, 20+brs) ;write(tjmlhrg[i]:0) ;
GotoXY(45, 20+brs) ;write(tdiskon[i]:0) ;
GotoXY(55, 20+brs) ;write(tjmlbyr[i]:0) ;
GotoXY(0, 21+brs) ;writeln('-------------------------------------------') ;
for i:=1 to 4 do
for i:=1 to 4-1 do
begin
for j:= i+1 to 4 do
begin
if jmlhrg[i] < jmlhrg[j] then
begin
temp:=jmlhrg[i];
jmlhrg[i]:=jmlhrg[j];
jmlhrg[j]:=temp;
end;
end;
end;
writeln('Data sudah urut') ;
writeln;
for i:=1 to 4 do
Readln;
end.