Professional Documents
Culture Documents
uses wincrt; const i=10; type stak = record R:array[1..i]of integer; T:longint; end; type O = array [1..100] of longint; function isempty(a:stak):boolean; begin isempty:=(a.T=0); end; function isfull(a:stak):boolean; begin isfull:=(a.T=i); end; procedure newstak(var a:stak); begin a.T:=0; end; procedure push(var a:stak; x:longint); begin if not (isfull(a)) then begin a.T:=a.T+1; a.R[a.T]:=x; end end; procedure pop(var a:stak; var x:longint);
begin if not (isempty(a)) then begin x:=a.R[a.T]; a.T:=a.T-1; end end; function balik(C:O;x:longint):longint; var k,l:integer; m,tmp:string; a:stak; begin newstak(a); for x:=1 to x do begin if x>0 then l:=C[x] ; push(a,C[x]); end; tmp:=''; for x:=1 to x do begin if not isempty(a) then pop(a,C[x]); str(C[x],m); tmp:=tmp+m; end; val(tmp,C[x],k); balik:=C[x];
end; {======Program Utama=======} var j,dibalik:longint; B:O; begin write('Masukan batas nilai = ');readln(j); writeln; writeln('nilai awal :'); for j:=1 to j do begin write('Nilai ke-',j,' = ');readln(B[j]); end; writeln; dibalik:=balik(B,j); writeln('nilai akhir Polindrom = ',dibalik); end. procedure push(var a:stak; x:longint); begin if not (isfull(a)) then begin a.T:=a.T+1; a.R[a.T]:=x; end function isfull(a:stak):boolean; begin isfull:=(a.T=i); end;
program DECbiner;
uses wincrt; const i=10; type stak = record R:array[1..i]of integer; T:longint; end; function isempty(a:stak):boolean; begin isempty:=(a.T=0); end;
end;
procedure pop(var a:stak; var x:longint); begin if not (isempty(a)) then begin x:=a.R[a.T]; a.T:=a.T-1; end end;
function converter(x:longint):longint; var k,l:integer; m,tmp:string; a:stak; begin createstak(a); while x>0 do begin l:=x mod 2; push(a,l); x:=x div 2; end; tmp:=''; while not isempty(a) do begin pop(a,x); str(x,m); tmp:=tmp+m; end; val(tmp,x,k); converter:=x; end; {======Program Utama=======} var j,convert:longint; begin write('Masukan nilai bilangan desimal = ');readln(j); convert:=converter(j); writeln(convert); end.
Program Convert_Decimal_To_Hexa; Uses wincrt; Const N = 100; Type Stack = record Isi : Array[1..N]of integer; Top : integer; end;
Procedure Push(X:integer; var S:Stack); begin If Not IsFull(S) then begin S.Top := S.Top + 1; S.Isi[S.Top] := X;
end; end;
Procedure Pop(var X:integer; var S:Stack); begin IF NOt IsEmpty(S) then begin X := S.Isi[S.Top]; S.Top := S.Top - 1; end; end;
program Antrian;
uses wincrt; const n = 100;
Procedure Convert(var S:Stack; X:integer); var Sisa : integer; begin Repeat Sisa := X mod 16; X := X div 16; Push(Sisa,S); Until X = 0 ; end;
type queue = record isi : array[1..n]of integer; head: integer; tail: integer; end;
function rubah (x:integer):string; begin if x=10 then rubah:='A'; if x=11 then rubah:='B'; if x=12 then
procedure Add(var q:queue; x:integer); begin if not IsFull(q) then begin q.tail:=q.tail+1; q.isi[q.tail]:=x; if q.head = 0 then q.head:=q.head+1; end; end;
procedure Remove(var q:queue;var x:integer); var i:integer; begin if not IsEmpty(q) then begin x := q.isi[q.head];
write ('jumlah data yang ingin dikeluarkan : '); readln(g); for i:=1 to g do
q.tail:=q.tail-1;
end;
end.