• Browse by Tags

Infix ke Prefix


Berikut ini saya akan berikan sebuah program dengan menggunakan Visual Studio, Silah kan copas program terseut dan pelajari lebih lanjut..






List Program infix ke prefix

#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <string.h>
#define MAX 20
using namespace std;
void convertip(char infix[],char prefix[]);
int main()
{
char infix[20],prefix[20];
cout<<"Masukan INFIX:n";
cin>>infix;
convertip(infix,prefix);
cout<<"HASIL DALAM PREFIX :n"<<prefix;
getch();

return 0;
}

char stack[MAX];
int top = -1;
char pop();
void push(char item);

int prcd(char symbol)
{
switch(symbol)
{
case '+':
case '-':
return 2;
case '*':
case '/':
return 4;
case '^':
case '$':
return 6;
case '(':
case ')':
case '#':
return 1;
}
}

int isoperator(char symbol)
{
switch(symbol)
{
case '+':
case '-':
case '*':
case '/':
case '^':
case '$':
case '(':
case ')':
return 1;
default:
return 0;
}
}

void convertip(char infix[],char prefix[])
{
int i,symbol,j=0;
char test[MAX];

infix=strrev(infix);
stack[++top]='#';

for(i=0;i< strlen(infix);i++) {
symbol=infix[i];
if(isoperator(symbol)==0) {
prefix[j]=symbol;
j++;
}
else
{
if(symbol==')') {
push(symbol);
}else if(symbol=='(') {
while(stack[top]!=')') {
prefix[j]=pop();
j++;
}
pop();//pop out (.
}else {
if(prcd(symbol)>prcd(stack[top])) {
push(symbol);
}else {
while(prcd(symbol)<=prcd(stack[top])) {
prefix[j]=pop();
j++;
}
push(symbol);
}//end of else.
}//end of else.
}//end of else.
}//end of for.

while(stack[top]!='#') {
prefix[j]=pop();
j++;
}
prefix[j]='�';//null terminate string.
prefix=strrev(prefix);
}

void push(char item) {
top++;
stack[top]=item;
}

char pop() {
char a;
a=stack[top];
top--;
return a;
}

Bookmark and Share

0 komentar on "Infix ke Prefix"



Posting Komentar