۲۷-اردیبهشت-۱۳۹۴, ۲۱:۳۵:۳۶
۱۳-اردیبهشت-۱۳۹۵, ۱۵:۱۳:۱۸
سلامم
این کد Postfix به prefix
این کد Postfix به prefix
کد:
#include <iostream>
#include <cstring>
#include <stack>
#include <algorithm>
#define flag '#'
using namespace std;
bool isOperator(char c)
{
if(c=='+' || c=='-' || c=='*' || c=='/' || c=='^' || c=='$')
return true;
else
return false;
}
int main()
{
stack<char> stk;
char postfix[30], prefix[30];
int j=0,len;
cout<<"Input a postfix expression: ";
cin>>postfix;
len = strlen(postfix);
for(int i=len-1;i>=0;i--)
{
if(isOperator(postfix[i]))
stk.push(postfix[i]);
else
{
prefix[j++] = postfix[i];
while(!stk.empty() && stk.top()==flag)
{
stk.pop();
prefix[j++] = stk.top();
stk.pop();
}
stk.push(flag);
}
}
prefix[j] = 0;
reverse(prefix, prefix + len);
cout<<"The prefix expression is: "<<prefix;
return 0;
}
(۲۷-اردیبهشت-۱۳۹۴, ۲۱:۳۵:۳۶)zohreh.ma نوشته است: [ -> ]سلام.
خواهش میکنم کمک کنید
برنامه تبدیل infix به postfix و postfix به infix با استفاده از لیست پیوندی با زبان ++c
۱۳-اردیبهشت-۱۳۹۵, ۱۵:۱۶:۵۹
این هم prefix به Postfix
کد:
void main()
{
char str[MAX],resstr[MAX],temp[MAX];
int i,z;
clrscr();
printf(“nEnter a prefix string?”);
gets(str);
for(i=0;str[i]!=’�';i++);
for(i=i-1,z=0;i>=0;z++,i–)
temp[z]=str[i];
temp[z]=’�';
printf(“nPrefix string: %s”,str);
prefix_to_postfix(temp,resstr);
printf(“nPostfix string: %s”,resstr);
getch();
}
void push(struct stack *s,char ch)
{
if(s->top==MAX-1)
{printf(“Stack Overflow!”);
exit(1);
}
s->arr[++(s->top)]=ch;
}
char pop(struct stack *s)
{
if(s->top==-1)
{printf(“Stack Underflow!”);
exit(1);
}
return(s->arr[(s->top)–]);
}
int isdigit(char ch)
{return(ch>=’0′ && ch<=’9′);
}
void prefix_to_postfix(char instr[],char outstr[])
{
int i,j,ct=1,z=0;
char ch,opnd1,opnd2;
struct stack stk;
stk.top=-1;
for(i=0;instr[i]!=’�';i++)
{
ch=instr[i];
if(isdigit(ch))
{push(&stk,ch);
}
else
{
if(ct==1)
{opnd1=pop(&stk);
opnd2=pop(&stk);
outstr[z++]=opnd1;
outstr[z++]=opnd2;
outstr[z++]=ch;
ct++;
}
else
{
opnd2=pop(&stk);
outstr[z++]=opnd2;
outstr[z++]=ch;
}
}
}
outstr[z]=’�';
}
(۲۷-اردیبهشت-۱۳۹۴, ۲۱:۳۵:۳۶)zohreh.ma نوشته است: [ -> ]سلام.
خواهش میکنم کمک کنید
برنامه تبدیل infix به postfix و postfix به infix با استفاده از لیست پیوندی با زبان ++c
۱۳-اردیبهشت-۱۳۹۵, ۱۵:۱۷:۵۶
این هم Infix به Postfix
کد:
//Evaluate the given expression
#include<iostream>
#include<stack>
#include<vector>
using namespace std;
//Only single digit numbers permitted
int GetPrecedence(char op)
{
switch (op)
{
case '+':
case '-':
return 1;
case '*':
case '/':
default:
return 2;
}
}
char* ConvertInorderToPreOrder(char* InOrderExp, int Size)
{
stack<char> Operators;
vector<char> PostOrderResult;
for (int i = Size-1; i >=0; i--)
if (InOrderExp[i] >= '0'&& InOrderExp[i] <= '9')
PostOrderResult.push_back(InOrderExp[i]);
else
{
while (!Operators.empty() && GetPrecedence(Operators.top()) >= GetPrecedence(InOrderExp[i]))
{
PostOrderResult.push_back(Operators.top());
Operators.pop();
}
Operators.push(InOrderExp[i]);
}
while (!Operators.empty())
{
PostOrderResult.push_back(Operators.top());
Operators.pop();
}
char *ResultString = (char*)malloc(sizeof(char)*PostOrderResult.size()+1);
memset(ResultString, 0, sizeof(char)*(PostOrderResult.size() + 1));
for (int i = 0; i < PostOrderResult.size(); i++)
ResultString[i] = PostOrderResult[i];
ResultString[PostOrderResult.size()] = '\0';
_strrev(ResultString);
return ResultString;
}
char* ConvertInorderToPostOrder(char* InOrderExp, int Size)
{
stack<char> Operators;
vector<char> PostOrderResult;
for (int i = 0; i < Size; i++)
if (InOrderExp[i] >= '0'&& InOrderExp[i] <= '9')
PostOrderResult.push_back(InOrderExp[i]);
else
{
while (!Operators.empty() && GetPrecedence(Operators.top()) >= GetPrecedence(InOrderExp[i]))
{
PostOrderResult.push_back(Operators.top());
Operators.pop();
}
Operators.push(InOrderExp[i]);
}
while (!Operators.empty())
{
PostOrderResult.push_back(Operators.top());
Operators.pop();
}
char *ResultString = (char*)malloc(sizeof(char)*PostOrderResult.size()+1);
memset(ResultString, 0, sizeof(char)*(PostOrderResult.size()+1));
for (int i = 0; i < PostOrderResult.size(); i++)
ResultString[i] = PostOrderResult[i];
ResultString[PostOrderResult.size()] = '\0';
return ResultString;
}
int main()
{
char InExp[] = "2+3*7-5*2-4/2*5+1-4+2/2+1";
cout << "\nInput: " << InExp;
cout << "\n\n";
cout << "\n\PostFix = " << ConvertInorderToPostOrder(InExp, strlen(InExp));
cout << "\n\PreFix = " << ConvertInorderToPreOrder(InExp, strlen(InExp));
cout << "\n\nEnd of code\n\n";
system("pause");
return 0;
}
(۲۷-اردیبهشت-۱۳۹۴, ۲۱:۳۵:۳۶)zohreh.ma نوشته است: [ -> ]سلام.
خواهش میکنم کمک کنید
برنامه تبدیل infix به postfix و postfix به infix با استفاده از لیست پیوندی با زبان ++c