Jumat, 20 November 2009

Inviks ke Postviks

Program ini versi lengkap untuk mengkonversi notasi inviks ke postfiks by me :

#include

#include

#include

#include

#define max 100



struct deret{

char angka[max];

int atas;

};



char akhir[max];

char awal[max];

struct deret tumpuk;


int data(char x)

{ if(isalpha(x)) return 1;

return 0;

}


int tanda(char x)

{ if(x=='^'||x=='*'||x=='/'||x=='+'||x=='-')

return 1;

else return 0;

}


int tingkatan(char x)

{ if(x=='^') return 3;

else if(x=='*'||x=='/') return 2;

else if(x=='+'||x=='-') return 1;

else return 0;

}


void entry(char x)

{ tumpuk.atas++;

tumpuk.angka[tumpuk.atas]=x;

}


char delet()

{ char x;

x=tumpuk.angka[tumpuk.atas];

tumpuk.atas--;

return x;

}


void main()

{ int i,j,k;

char x,jwb;


tumpuk.atas=-1;

k=-1;


clrscr();


gotoxy(13,2); printf("-------------------------------------------");

gotoxy(15,3); printf(" MENGUBAH NOTASI INFIX MENJADI POSTFIX");

gotoxy(15,4); printf(" DENGAN MEMANFAATKAN STRUKTUR TUMPUKAN");

gotoxy(13,5); printf("-------------------------------------------");

gotoxy(13,7); printf("Masukan ungkapan awal (infix) : ");scanf("%s",&awal);

gotoxy(13,8); printf("Ungkapan akhir (postfix) : ");



do

{ for(i=0;i<=strlen(awal);i++) { if(data(awal[i])) akhir[++k]=awal[i]; else if(awal[i]=='(') entry(awal[i]); else if(awal[i]==')') { while(tumpuk.angka[tumpuk.atas]!='(') akhir[++k]=delet(); delet(); } else if(tanda(awal[i])) { while (tumpuk.atas!=-1 && tingkatan(awal[i])<=tingkatan(tumpuk.angka[tumpuk.atas])) akhir[++k]=delet(); entry(awal[i]); } else if(tumpuk.atas!=-1) { for(j=tumpuk.atas;j>-1;j--)

akhir[++k]=delet();

}

}


for(k=0;k<=strlen(akhir);k++) { printf("%c",akhir[k]);} gotoxy(13,10); printf("-------------------------------------------"); gotoxy(13,12); printf("Anda akan mencoba lagi?(Y=ya/T=tidak)"); scanf("%c",&jwb); } while(jwb=='Y'||jwb=='y'); getch(); }

Tidak ada komentar:

Posting Komentar