Anda di halaman 1dari 5

program balikstak;

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;

procedure createstak(var a:stak); begin a.T:=0; 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 CreateStack(Var S:Stack); begin S.Top := 0; end;

Function IsFull(S:Stack):boolean; begin IsFull := (S.Top = N); end;

Function IsEmpty(S:Stack):boolean; begin IsEmpty := (S.Top = 0); 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;

rubah:='C'; if x=13 then rubah:='D';

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;

if x=14 then rubah:='E'; if x=15 then rubah:='F'; 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 IsFull(q:queue):boolean; begin IsFull := (q.head = 1) and (q.tail = n); end;

function rubah (x:integer):string; begin if x=10 then rubah:='A'; if x=11 then rubah:='B'; if x=12 then

function IsEmpty(q:queue):boolean; begin IsEmpty := (q.head = 0) and (q.tail = 0); end;

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;

var q: queue; x,b,g,i: integer;

begin write('Panjang antrean : '); readln(b);

for i:=1 to b do begin write('masukkan angka ke antrian ',i,' : ');

procedure Remove(var q:queue;var x:integer); var i:integer; begin if not IsEmpty(q) then begin x := q.isi[q.head];

readln(x); Add(q,x); end; writeln;

write ('jumlah data yang ingin dikeluarkan : '); readln(g); for i:=1 to g do

for i:=2 to q.tail do q.isi[i-1]:=q.isi[i];

begin remove(q,g); writeln(g);

q.tail:=q.tail-1;

end;

if q.tail=0 then q.head:=0; end; end;

end.

Anda mungkin juga menyukai