Algoritma – Mengoperasikan Operasi Matematika Bentuk PostFix

Program ini meruapakan program pengitung operasi matematika dalam bentuk PostFix.  Algoritma dalam program ini sama dengan algoritma kita memahami bentuk PostFix itu sendiri.

Jika bertemu dengan angka, maka akan dipush. Jika bertemu dengan operator maka akan dilakukan pop kemudian akan dioperasikan kedua angka terakhir yang  tersimpan di dalam Stack tersebut. Hasil terakhir merupakan angka yang terakhir disimpan di dalam stack.  Jika isi stack masih ada, maka terjadi kesalahan di dalam penulisan input operasi postfix tersebut

Berikut merupakan source code dalam bahasa JAVA :

package PostfixOperasi;import javax.swing.*;
class Stack{   private int maxStack;

private int [] array;

private int top;

public Stack(int max)

{   maxStack = max;

array = new int [max];

top=-1;

}

public boolean full()

{   return (top==maxStack-1);}

public boolean empty()

{   return (top==-1);       }

public void push(int data)

{   array[++top]=data;  }

public int pop()

{   return (array[top–]);  }

public int peek()

{   return (array[top]);  }

public void edit(char operator)

{   int angka1,angka2,hasil=1;

angka2=pop();

angka1=pop();

switch (operator)

{   case ‘+’    :   hasil = angka1+angka2;

break;

case ‘-‘    :   hasil = angka1-angka2;

break;

case ‘*’    :   hasil = angka1*angka2;

break;

case ‘/’    :   hasil = angka1/angka2;

break;

case ‘%’    :   hasil = angka1%angka2;

break;

case ‘&’    :   for(int i=0;i<angka2;i++)

hasil*=angka1;

break;

}

push(hasil);

}

}

public class Main

{   public static void main(String[] args)

{   String input=JOptionPane.showInputDialog(null, “Masukkan Batasan Stack = “);

Stack s=new Stack(Integer.parseInt(input));

input=null;

input=JOptionPane.showInputDialog(null, “Masukkan Operasi PostFix = “);

char []operasi=new char[50];

for(int i=0;i<input.length();i++)

{   operasi[i]=input.charAt(i);

if(operasi[i]>=’0’&&operasi[i]<=’9′)

s.push(operasi[i]-48);

else if((operasi[i]==’+’||operasi[i]==’-‘||operasi[i]==’*’||operasi[i]==’/’||operasi[i]==’%’||operasi[i]==’&’))

s.edit(operasi[i]);

else

JOptionPane.showMessageDialog(null, “Masukkan ada yang salah”);

}

JOptionPane.showMessageDialog(null,”Hasil “+s.peek());

}

}

Tinggalkan Jejak

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s