program balik_kalimat;
uses wincrt;
const elemen = 200;
type s200 = string[elemen];
tumpukan = record
isi:s200;
atas: 0..elemen;
end;
var t: tumpukan;
i, k, l, m: integer;
kalimat, word: s200;
procedure awalan(var t: tumpukan);
begin
t.atas:=0;
end;
procedure push (var t:tumpukan; x: char);
begin
t.atas:=t.atas+1;
t.isi[t.atas]:= x;
end;
function pop(var t:tumpukan):char;
begin
pop:=t.isi[t.atas];
t.atas:=t.atas-1;
end;
begin
clrscr;
awalan(t);
writeln(‘==========================================’);
writeln(‘Tumpukan Untuk Membalik Kata Dalam Kalimat’);
writeln(‘==========================================’);
writeln;
write(‘Ketik Kalimat : ‘); readln (kalimat);
clrscr;
writeln(‘Kalimat Asli : ‘,Kalimat);
writeln;
writeln(‘Setelah Operasi Push dan Pop’);
for i:=1 to length(kalimat) do
begin
if (kalimat[i]=’ ‘) then
begin
for k:=(i-1) downto l do
word:=word+kalimat[k];
word:=word+kalimat[i];
end;
l:=length(word);
if i=length(kalimat) then
begin
for i:=length(kalimat) downto l do
word:=word+kalimat[i];
end;
end;
for i := 1 to (length(kalimat) + 1) do
push(t, word [i]);
for i := 1 to (length(kalimat) + 1) do
write (pop (t) );
readln;
end.

OUTPUT PROGRAM

==========================================
Tumpukan Untuk Membalik Kata Dalam Kalimat
==========================================

Ketik Kalimat : Nama saya adalah Rani Susanti

Kalimat Asli : Nama Saya adalah Rani Susanti

Setelah Operasi Push dan Pop

Susanti Rani adalah Saya Nama

Read More..