ورود

نسخه کامل مشاهده نسخه کامل : ارزیابی عبارات پیشوندی وپسوندی



setare55
07-06-2007, 13:21
سلام خواهش می کنم یک برنامه ارزیابی عبارات پسوندی وپیشوندی وهمچنین تبدیل عبارات پسوندی را هر کیداره برام بفرسته:11:

HAW3D
08-06-2007, 09:45
سلام
این یه برنامه هستش که عبارت infiX رو به postfiX تبدیل میکنه
#include<iostream.h>
#include<conio.h>
#include<string.h>
#include <stdio.h>
#include <dos.h>
#include <alloc.h>
int push(char stack[],char ch,int &top)
**
if(top==20)
return 0;
else
stack[top++]=ch;
}
int pop(char *stack,int &top)
**
if(top==0)
return 0;
else
return stack[--top];
}
void convert(int num,char inf[],int pos)
**
char opr[]="+-*/()";
for(int i=pos;i<strlen(inf);i++)
**
if(!(strchr(opr,inf[i])))
num=num*10+inf[i]-48;
else
break;
}
}
void main()
**
cout<<" \\|||/ "<<endl;
cout<<" (o o) "<<endl;
cout<<"---ooO(_)Ooo--- HaW3D"<<endl<<endl;

char stack[21],inf[20],opr[]="+-*/)";
int top=0;
int num1=0,num2=0;
char aml;

printf("Enter an infix statument :");
scanf("%s",inf);

convert(num1,inf,0);
printf("%d\n",num1);

for(int i=0;i<strlen(inf);i++)
**
if(inf[i]!='(')
if(!(strchr(opr,inf[i])))
printf("%c",inf[i]);
else if((inf[i]!=')'))
push(stack,inf[i],top);
else
printf("%c",pop(stack,top));
}
for(i=top;i>0;i--)
**
printf("%c",pop(stack,top));
}
}

برای تبدیل به prefiX هم تقریبا همون روشه
برای پیدا کردن جوابش یه الگوریتم پیدا کرده بودم که انشا ا... بعدا میگم(یعنی الان خاطرم نیست)

salman_mazidi
21-06-2007, 17:37
سلام براي ديدن برنامه اي كه ميخواي به كتاب ساختمان داده ها در C++نوشته جعفرنژاد قمي صفحه78 مراجعه كن