Tugas Pertemuan 6 - Studi Kasus Stack

Nama : Azka Fairus Syamsa

NRP : 5025251067

Kelas : Struktur Data (D)


STUDI KASUS STACK

1. Konversi ke Postfix
2. Evaluasi Postfix
3. Multi Digit Postfix
4. Visualisasi Stack


Program Konversi ke Postfix




Penjelasan Kode Program:

Program C++ tersebut berfungsi untuk mengonversi ekspresi matematika dari bentuk infix (misalnya A+B) menjadi postfix (misalnya AB+) menggunakan struktur data stack. Fungsi precedence() digunakan untuk menentukan tingkat prioritas operator, di mana ^ memiliki prioritas tertinggi, diikuti * dan /, lalu + dan -. Fungsi isOperator() berfungsi untuk mengecek apakah suatu karakter termasuk operator.

Bagian utama logika terdapat pada fungsi infixToPostfix(), yang membaca ekspresi infix karakter demi karakter. Jika karakter berupa operand (huruf atau angka), maka langsung ditambahkan ke hasil postfix. Jika karakter adalah tanda kurung buka (, maka dimasukkan ke dalam stack. 

Jika tanda kurung tutup ), maka operator di dalam stack akan dikeluarkan dan ditambahkan ke postfix hingga ditemukan pasangan (. Jika karakter adalah operator, maka program akan membandingkan prioritasnya dengan operator di puncak stack; operator dengan prioritas lebih tinggi atau sama akan dikeluarkan terlebih dahulu sebelum operator baru dimasukkan. Setelah seluruh ekspresi diproses, sisa operator di dalam stack akan dipindahkan ke postfix.

Pada fungsi main(), program meminta pengguna memasukkan ekspresi infix, kemudian memanggil fungsi konversi dan menampilkan hasil postfix. Secara keseluruhan, program ini mengimplementasikan algoritma konversi infix ke postfix berbasis stack yang efisien dan umum digunakan dalam pemrosesan ekspresi matematika.


Program Evaluasi Postfix


Penjelasan Kode Program:

Program C++ tersebut digunakan untuk mengevaluasi ekspresi matematika dalam bentuk postfix (Reverse Polish Notation) menggunakan struktur data stack. Pada fungsi evaluatePostfix(), program membaca ekspresi karakter demi karakter. Jika karakter yang dibaca adalah angka (isdigit(c)), maka karakter tersebut dikonversi dari tipe char ke int dengan cara c - '0', lalu dimasukkan ke dalam stack. Jika karakter yang dibaca adalah operator (+, -, *, /), maka program akan mengambil dua nilai teratas dari stack, di mana nilai kedua yang diambil merupakan operand kedua (val2) dan nilai pertama merupakan operand pertama (val1), lalu dilakukan operasi sesuai operator tersebut.

Hasil dari operasi tersebut kemudian dimasukkan kembali ke dalam stack sebagai nilai baru. Proses ini terus berlangsung hingga seluruh ekspresi selesai diproses. Setelah itu, nilai terakhir yang tersisa di dalam stack merupakan hasil akhir dari evaluasi postfix dan dikembalikan oleh fungsi. Pada fungsi main(), program meminta pengguna memasukkan ekspresi postfix, kemudian memanggil fungsi evaluasi dan menampilkan hasilnya ke layar. Program ini efektif untuk menghitung ekspresi postfix sederhana, meskipun terbatas hanya pada angka satu digit dan operator dasar.


Multi Digit Postfix


Penjelasan Kode Program:

Program ini digunakan untuk mengevaluasi ekspresi postfix yang terdiri dari angka (bisa lebih dari satu digit) dan operator, dengan memanfaatkan struktur data stack dan stringstream. Pada fungsi evaluatePostfix(), input string dipecah menjadi token-token berdasarkan spasi menggunakan stringstream. Jika token berupa operator (+, -, *, /), maka dua nilai teratas dari stack diambil, dilakukan operasi sesuai operator, lalu hasilnya dimasukkan kembali ke stack. Jika token bukan operator, maka dianggap sebagai operand dan dikonversi ke integer menggunakan stoi(), lalu dimasukkan ke stack.

Proses ini berlangsung hingga semua token diproses, dan nilai terakhir di dalam stack merupakan hasil akhir evaluasi. Pada fungsi main(), pengguna diminta memasukkan ekspresi postfix dengan spasi sebagai pemisah, kemudian program memanggil fungsi evaluasi dan menampilkan hasilnya. Program ini lebih fleksibel dibanding versi sebelumnya karena dapat menangani angka lebih dari satu digit.


Visualisasi Stack dengan HTML, CSS, dan JavaScript

Source Code Studi Kasus Stack




   


Comments

Popular Posts