postfix to infix

6
FADHILAH KURNIA PUTRI 5110100201 POSTFIX to INFIX

Upload: fadhilah-kurnia-putri

Post on 30-Jun-2015

186 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: POSTFIX to INFIX

FADHILAH KURNIA PUTRI5110100201

POSTFIX to INFIX

Page 2: POSTFIX to INFIX

Soal

Mengubah postfix menjadi infix dengan menggunakan STL list atau membuat sendiri fungsi yang serupa dengan STL stack

Page 3: POSTFIX to INFIX

Penjelasan Soal

Mengubah postfix menjadi infixPostfix

12+34-/Infix

((1+2)/(3-4))

Page 4: POSTFIX to INFIX

Algoritma

Contoh soal: 12+34-/Kita baca string dengan membaca per karakterJika karakter 1-9, maka masukkan dalam stackJika bertemu dengan -,+,* atau /,

maka angka yang di dalam stack keluar.

Menggabungkan dua angka denganoperator diantaranya, di pinggir kanan dan kiri diberi tanda kurung.

Memasukkan kembali gabungan angka ke dalam stack

Page 5: POSTFIX to INFIX

( )( )

2

1(1+2)

3

4

(3-4)

((1+2)/(3-4))

1 2+

12+34-/

( )3 4-/

Page 6: POSTFIX to INFIX

Source Code

#include<stdio.h>#include<list>#include<string>#include<iostream>using namespace std;

int main (){ int n,x; char exp[1000],c1,c2,c3; string temp,temp2; list <string> opn; string s1,s2,s3; string kb; string kt(")"); scanf("%d", &n); for(int i=0;i<=n;i++) { gets(exp); x=strlen(exp); for(int j=0;j<x;j++) { kb="("; if(exp[j]>='0' && exp[j]<='9‘)

if(exp[j]>='0' && exp[j]<='9') { temp.assign(1,exp[j]); //string a(char *temp); opn.push_back(temp); } if(exp[j]== '+' || exp[j]=='-' || exp[j]=='*' ||

exp[j]=='/') { temp2.assign(1,exp[j]);

s3=opn.back();opn.pop_back();s2=opn.back();opn.pop_back();

kb+=s2;kb+=temp2;kb+=s3;kb+=kt; opn.push_back(kb); } } //printf("%s\n", kb); cout<<kb<<endl; } system("pause"); return 0;}