Tugas Pertemuan 6 - Studi Kasus Stack
Nama : Azka Fairus Syamsa
NRP : 5025251067
Kelas : Struktur Data (D)
STUDI KASUS STACK
1. Konversi ke Postfix2. Evaluasi Postfix3. Multi Digit Postfix4. 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.

Comments
Post a Comment