Membuat program infix to postfix dan infix to prefix

Berikut ini adalah pertanyaan dari Ivandakon2808 pada mata pelajaran TI untuk jenjang Sekolah Menengah Pertama

Membuat program infix to postfix dan infix to prefix

Jawaban dan Penjelasan

Berikut ini adalah pilihan jawaban terbaik dari pertanyaan diatas.

Jawaban:

Berikut adalah contoh program untuk mengonversi ekspresi matematika dari notasi infix menjadi postfix dan prefix menggunakan bahasa pemrograman Python:

# Fungsi untuk mengecek apakah karakter adalah operator

def is_operator(c):

   if c == '+' or c == '-' or c == '*' or c == '/' or c == '^':

       return True

   else:

       return False

# Fungsi untuk menentukan prioritas operator

def precedence(c):

   if c == '^':

       return 3

   elif c == '*' or c == '/':

       return 2

   elif c == '+' or c == '-':

       return 1

   else:

       return 0

# Fungsi untuk mengonversi dari infix ke postfix

def infix_to_postfix(infix):

   stack = []

   postfix = ''

   for c in infix:

       if c.isalpha() or c.isdigit():

           postfix += c

       elif is_operator(c):

           while len(stack) > 0 and precedence(stack[-1]) >= precedence(c):

               postfix += stack.pop()

           stack.append(c)

       elif c == '(':

           stack.append(c)

       elif c == ')':

           while stack[-1] != '(':

               postfix += stack.pop()

           stack.pop()

   while len(stack) > 0:

       postfix += stack.pop()

   return postfix

# Fungsi untuk mengonversi dari infix ke prefix

def infix_to_prefix(infix):

   stack = []

   prefix = ''

   for c in infix[::-1]:

       if c.isalpha() or c.isdigit():

           prefix = c + prefix

       elif is_operator(c):

           while len(stack) > 0 and precedence(stack[-1]) > precedence(c):

               prefix = stack.pop() + prefix

           stack.append(c)

       elif c == ')':

           stack.append(c)

       elif c == '(':

           while stack[-1] != ')':

               prefix = stack.pop() + prefix

           stack.pop()

   while len(stack) > 0:

       prefix = stack.pop() + prefix

   return prefix

# Contoh penggunaan program

infix = 'a+b*c-d/e'

print('Infix:', infix)

print('Postfix:', infix_to_postfix(infix))

print('Prefix:', infix_to_prefix(infix))

Penjelasan:

Dalam program ini, fungsi is_operator digunakan untuk mengecek apakah karakter yang diberikan merupakan operator matematika. Fungsi precedence digunakan untuk menentukan prioritas operator, dengan operator pangkat (^) memiliki prioritas tertinggi dan operator penjumlahan (+) dan pengurangan (-) memiliki prioritas terendah.

Fungsi infix_to_postfix digunakan untuk mengonversi ekspresi matematika dari notasi infix ke postfix. Fungsi ini menggunakan struktur stack untuk menangani operator-operator yang ditemukan dalam ekspresi. Setiap karakter dalam ekspresi diperiksa satu per satu. Jika karakter adalah operand (huruf atau angka), maka karakter tersebut langsung dimasukkan ke dalam ekspresi postfix. Jika karakter adalah operator, maka operator tersebut ditempatkan dalam stack. Setiap kali ditemukan operator baru, stack akan diperiksa untuk menentukan apakah operator baru tersebut memiliki prioritas yang lebih rendah dari operator yang sudah ada dalam stack. Jika operator baru memiliki prioritas yang lebih rendah, maka operator-operator dalam stack yang memiliki prioritas lebih tinggi akan diambil dan dimasukkan ke dalam ekspresi

Semoga dengan pertanyaan yang sudah terjawab oleh yogiario316 dapat membantu memudahkan mengerjakan soal, tugas dan PR sekolah kalian.

Apabila terdapat kesalahan dalam mengerjakan soal, silahkan koreksi jawaban dengan mengirimkan email ke yomemimo.com melalui halaman Contact

Last Update: Fri, 30 Jun 23