PDA

نسخه کامل مشاهده نسخه کامل : infix2prefix



refresh918
12-05-2009, 22:02
سلام.این برنامه برای تبدیل Infix به Postfixهستش میخوام عوضش کنم که به Prefix تبدیل کنه... کسی میتونه کمکم کنه ؟

اگه خونده نمیشه کپی کنید توی notepad

#include<iostream.h>
#include<conio.h>
#include<string.h>
int top;
char stack[200];
void push(char ch)
{ if ( top==200 )
cout<<"Overflow";
else
stack[top]=ch;
top++;
}
char pop()
{ if ( top>0 )
return stack[--top];
else
return ' ';
}
int Empty()
{ if ( top==0 )
return 1;
else
return 0;
}
main(){
top=0;
char s[100];
char o[100], ch;
for(int i=0;i<100;i++)
o[i]=0;
o['+']=1;
o['-']=1;
o['*']=2;
o['/']=2;
o['^']=3;

clrscr();
cin>>s;
for( i=0;i<strlen(s);i++)
{
if( s[i]>='0' && s[i]<='9' || s[i]>='a' && s[i]<='z' ||
s[i]>='A' && s[i]<='Z' )
cout<<s[i];
else if( s[i]=='(')
push( s[i] );
else if( s[i]==')')
{
ch=pop();
while(ch!='(')
{
cout<<ch;
ch=pop();
}
}
else if( s[i]=='+' || s[i]=='-'|| s[i]=='*'||
s[i]=='/'|| s[i]=='^')
{
if(Empty()==0)
{
ch=pop();
while( o[s[i]] <= o[ch] && ch!='(' )
{
cout<<ch;
ch=pop();
}
push(ch);
}
push( s[i] );
}
}
while(Empty()==0)
cout<<pop();
getch();
}

فاطـمه
14-05-2009, 08:16
برنامه رو توی تگ کد بذارید تا خوانا باشه
در مورد برنامه هم اینا دو تا برنامه جدا هستن