Senin, 16 Juni 2008

Program Pembalik Kata



uses wincrt;
const max_elemen=20;
type str = string[20];
stack = record
elemen:array[1..max_elemen] of char;
atas : integer;
end;

var T:stack;
atas:integer;

procedure push(var a :stack; kar:char);
begin
if a.atas = max_elemen then
writeln('STACK SUDAH PENUH ')
else
begin
inc(a.atas);
a.elemen[a.atas]:= kar;
end;
end;
function pop(var a:stack):char;
begin
if a.atas = 0 then
writeln('STACK SUDAH KOSONG')
else
begin
pop:=a.elemen[a.atas];
dec(a.atas);
end;
end;
procedure konversi(var T : Stack);
var Kal:str;
i,j :integer;
begin
write('kalimat :');readln(Kal);
for i := length(Kal) downto 0 do
begin
if i <> 0 then {jika indeks kalimat belum habis lakukan push atau pop}
begin
if Kal[i] <> ' ' then {jika tidak ditemukan spasi berarti tiap huruf di-Push ke stack}
begin
push(T,Kal[i]);
end
else {jika ditemukan berarti dalam stack telah terisi satu kata}
begin
for j := 1 to T.atas do
begin
write(pop(T)); {Tulis semua huruf dalam stack}
end;
write(' ');
end;
end
else {indeks kalimat sudah habis}
begin
for j := 1 to T.atas do
write(pop(T)); {tampilkan semua huruf dalam stack yang tersisa}
end;
end;
end;
begin {Program utama}
T.atas:=0;
konversi(T);
end.

Tidak ada komentar: