Thursday, August 5, 2010

radix short dengan pascal

program radix_sort;

type list = array [1..10]of integer;
var
list1,list2,list3 :list;
b:integer;
i,k,jum,max:byte;


//fungsi pangkat
function pangkat(a : integer; b : integer) : integer;
var i : integer; temp : integer;
begin
temp := 1;
for i := 1 to b do
begin
temp := temp * a;
end;
pangkat := temp;
end;


//fungsi input
procedure input(var a,b,c:list;max:integer);
begin
for i:=1 to max do
begin
a[i]:=random(999);c[i]:=a[i];b[i]:=a[i];
end;
end;


//fungsi lebar=> untuk mengetahui lebar angka
procedure lebar(var jum:byte;a:list;max:byte);
var i,j:byte;
begin
j:=0;
jum:=0;
for i:=1 to max do
begin
b:=a[i];
while (b<>0) do
begin
b:=b div 10;
j:=j+1;
end;
if (jum
j:=0;
end;
end;

//fungsi pengurutan radix
procedure radix(var a,c:list;jum,max:byte);
var e,i,j,k,konter:byte;
b:integer;
begin
for i:=1 to jum do
begin
konter:=0;
for e:=0 to 9 do
begin
for j:=1 to max do
begin
b:=(a[j]div(pangkat(10,i-1))) mod 10;
if (b=e) then
begin
konter:=konter+1;
c[konter]:=a[j];
writeln('berubah pada saat i=',i,' bilangan=',e,' dan urutan ke=',j);
writeln('yang di konter=',konter,' adalah ',c[konter]);
end;
end;

end;
writeln;writeln;
for k:=1 to max do begin
a[k]:=c[k];
end;
end;
end;



begin
max:=5;
input(list1,list2,list3,max);
lebar(jum,list3,max);
radix(list1,list2,jum,max);
for k:=1 to max do begin
writeln(list3[k],' ',list1[k]);
end;

end.

2 comments:

Unknown said...

kang ini maksdunya apa ya?
di bagian procedure lebar
if (jum
j=0;

Dwi Adi Laksono said...

silahkan di telusuri sendiri mas,,
enaknya gimana itu program nya..
hehe