الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

convert from prefix to infix ....

بدأه طــآلبة حآسب آلي . في 3 يونيو 2011 · 5 رد · 1,784 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلاام عليكم ورحمة الله وبركاته ..

ممكن احد يتكرم ويشرح لي طريقة التحويل من prefix to infix ....

مثلا"

+ab

ايش الناتج وكيف طلع,

المثال هذا سهل ,, مفهوم يعني , لكني لما يجي عمليات مع بعض كيف الطريقة اللي ارجعها الى infix

#2

السلام عليكم ورحمه الله وبركاته

اختي جربي الكود التالي


#include<stdio.h>
#include<conio.h>
#include<string.h>
#define MAX 15
#define true 1
#define false 0

/*Structure Decvlaration*/
typedef struct
{
char data[MAX];
char top;
}STK;

/*Function Declarations*/
void input(char str[]);
void intopre(char str1[],char pre[]);
void intopost(char str1[],char post[]);
int isoperand(char sym);
int prcd(char sym);
void push(STK *s1,char elem);
int pop(STK *s1);
int empty(STK *s2);
int full(STK *s2);
void dis(char str[]);

void main()
{
STK s;
int cs,ans;
char str[MAX],pre[MAX],post[MAX];
clrscr();
do /*Using Do-while Loop*/
{
clrscr();
printf("
-----Program for Expressions-----");
printf("
Input The String:");
printf("
MENU:
");
printf("1.Infix to Prefix
");
printf("2.Infix to Postfix");
printf("
3.Exit");
cs=getche();

switch(cs) /*Using Switch Case*/
{
case 1:
intopre(str,pre);
break;
case 2:
intopost(str,post);
break;
case 3:
break;
default:
printf("
Enter a Valid Choise!"); /*Default Case*/
break;
}
printf("
Do you wish to Continue?(y/n)");
ans=getche();
}while(ans=='y'||ans=='Y'); /*Condition for Do-while loop*/

getch();
}

/*To Input String*/
void input(char str)
{
printf("Enter the Infix String:");
scanf("%s",str);
}

/*To Covert Infix To Prefix*/
void intopre(STK s1,char str1[],char pre[])
{
int len,flag;
len=strlen(str1);
int check=0,cnt=len-1,pos=0;
char elem;

while(cnt>=0) /*while condition*/
{
flag=0;
if(isoperand(str1[cnt])) /*Checking for Operand*/
{
printf("%c",str1[cnt]);
cnt--;
pos++;
}
else
{
check=prcd(str1[cnt]);
while(check==false)
{
pre[pos]=str1[cnt];
flag=1;
pos++;
cnt--;
}
if(flag==0)
{
elem=pop(&s1);
printf("%c",elem);
}
}

}
}

/*To Convert Infix To Postfix*/
void intopost(STK s1,char str1[],char post[])
{
int len;
len=strlen(str1);
int check=0,cnt=len-1,pos=0;

}

/*To Check For Operand*/
int isoperand(char sym)
{
if('A'<sym<'Z'||'a'<sym<'z')
return(true);
return(false);
}

/*To Check The Precedence*/
int prcd(char sym)
{

}

/*To Display String*/
void dis(char str[])
{


}

/*Push Function Definition*/
void push(STK *s1,char elem)
{
if(!full(s1))
{
s1->top++; /*Incrementing top*/
s1->data[s1->top]=elem; /*Storing element*/
}
else
printf("
Stack is Full!");
}

/*Full Function Definition*/
int full(STK *s2)
{
if(s2->top==MAX) /*Condition for Full*/
return(true);
return(false);
}

/*Pop Function Definition*/
int pop(STK *s1)
{
char elem;
if(!empty(s1))
{
elem=s1->data[s1->top]; /*Storing top stack element in elem*/
s1->top--; /*Decrementing top*/
return(elem);
}
return(false);
}

/*Empty Function Definition*/
int empty(STK *s2)
{
if(s2->top==-1) /*Condition For Empty*/
return(true);
return(false);
}

.:: Wish to become better and better ::.

#3

لآ لآ أريد كود .,

اريد ان افهم حل السؤال يدويآ : )

1
#4

السلام عليكم ورحمه الله وبركاته

التحويل من infix الى prefix هي عملية تحويل الاشاره قبل المعاملين, سنأخذ مثال للتوضيح, لنفترض معنا العبارة التالية: a+b*c-d

طبعا حسب الاولوية ستتنفذ اشارة الضرب لذا ستتحول العباره الى a+*bc-d ومن ثم سننفذ الجمع وستتحول الى a*bc-d+ واخيرا الطرح a*bcd+-

2

.:: Wish to become better and better ::.

#5

وعليكم السلام ورحمة الله وبركاته .

لآزلت لم تفهمني يآأخي الكريم .

التحويل يكون من prefix الى infix

+ -^ABC*D**EFG

كيف ارجع العبارة الى شكلها الأصلي .. :)

#6

السلام عليكم ورحمه الله وبركاته

اختي اصلا انتي ذكرتي في موضوعك الاول التحويل من Infix الى Prefix؟!!

شوفي المثال التالي

+-^ABC*D**EFG

+-A^BC*D**EFG

+-A^BC*D*E*FG

+-A^BC*DE*F*G

+-A^BCD*E*F*G

+A^B-CD*E*F*G

A^B-C+D*E*F*G

1

.:: Wish to become better and better ::.

مواضيع مشابهة