Remove this ad

Lead

Nov 13 10 4:41 AM

Tags : :


algoritma Stack???
kek mana tu???
mohon dari tetua di tif zine untuk memberi kejelasan.,.,
Coz,ne yg mau UTS kan,.,.,.,
klu bisa sama contoh nya juga.,.
udah baca buku sih.,.,tpi nalar g nyampe nich.,.,

Quote    Reply   
Remove this ad
Remove this ad

#1 [url]

Nov 23 10 9:37 AM

Waduh udah lama banget ga main kesini, hahah

Stack ya?

Hmm, sebenarnya prinsipnya sederhana
Seperti menysun kartu remi menjadi menara
Kita harus membangun mulai dari lantai dasar, lantai satu, lantai dua, dst (proses ini disebut push)
Jikalau ingin merubah jumlah kartu yang ada di lantai 3, kita harus membuka dulu lantai puncak hingga ke lantai 4 baru merenovasi lantai 3. (proses membuka lantai ini disebut pop)

Nah
Misalnya adalah pengkoversi bilangan desimal menuju biner
Bilangan desimal misalnya 3 dalam biner adalah 11 (ingat lagi pelajaran sistem digital di semester 1)
Proses pengkonversian ini melibatkan proses tumpuk ambil (push-pop) seperti dalam stack

Karena

Misal merubah desimal (angka 17 misalnya) ke biner

18 mod 2 = 0 (simpan ke array //posisi1)
18 div 2 = 9
9 mod 2 = 1 (simpan ke array //posisi2)
9 div 2 = 4
4 mod 2 = 0 (simpan ke array //posisi3)
4 div 2 = 2
2 mod 2 = 0 (simpan ke array //posisi4)
2 div 2 = 1
1 mod 2 = 1 ( simpan ke array //posisi5)
1 div 2 = 0

Jadi array sekarang menyimpan 5 data : 0-1-0-0-1
Biner 17 adalah reverse dari 01001 yakni 10010

Proses menyimpan angka biner ke array (satu persatu itu) dalah push
Sedangkan prses mereverse nya adalah pop

Dalam programnya adalah sebagai berikut (coba aja compile di turbo pascal / free pascal) :




uses wincrt;

var
        x,n,no,angka,i : longint;
        larik : array [1..10000] of longint;


begin

x:=1;
n:=0;
readln (angka);

        while x <> 0 do begin
                n := n +1; {ini bagian yang menjalankan skema push, sebagai penaik maxspot}
                larik[n] := angka mod 2; {ini bagian pengisi maxspot}
                angka := angka div 2;
                x := angka;
        end;

no:=n;

        for i:=1 to no do begin
                write (larik[n]);
                n:=n-1; {bagian penurun maxspot, penjalan skema pop}
        end;
readln;
end.


Maxspot = ruang kosong tertinggi dalam array (atau tempat stack)

Hope these help you a lots :)

'an idiotic sample for a traumatic test'person has a blog that need to be visited bo-investigasi.blogspot.com

Quote    Reply   

#2 [url]

Nov 23 10 9:42 AM

Bonus :

Source Code Pengkonversi bilangan desimal ke segala basis (2-16)
Dengan memanfaatkan stack ke dalam sifat string secara langsung

const
number : string [16] = '0123456789ABCDEF';

var
hasil : string;
a,b : longint;

procedure ubahbasis (bil: longint; base:longint);

begin
if (bil<>0) then
        begin
        hasil :=number[bil mod base + 1]+hasil;
        ubahbasis (bil div base, base);
        end;
end;

begin
        write ('Mengkoversi bilangan desimal : ');
        readln (a);
        write ('ke bilangan basis ');
        readln (b);
        hasil :='';
ubahbasis (a,b);

writeln ('hasilnya : ',hasil);

readln;

end.


'an idiotic sample for a traumatic test'person has a blog that need to be visited bo-investigasi.blogspot.com

Quote    Reply   
Add Reply

Quick Reply

bbcode help