Programming Algorithms

C++ مجموعه ای از الگوریتم ها و نمونه سوالات حل شده به زبان

Programming Algorithms

C++ مجموعه ای از الگوریتم ها و نمونه سوالات حل شده به زبان

Programming Algorithms

خوش آمدید

امیدوارم مطالب این وبلاگ برای شما کارآمد باشد.
لطفا اگر اشکالی وجود داشت من را در جریان بگذارید...

بایگانی
آخرین نظرات
#include <iostream>
#include <string>
#include <stack>

using namespace std;

string op [] = { "-", "+", "/", "*", "^", ""};

int check_operator( string ch)
{
for( int i = 0; op[i] != ""; i++)
{
if( op[i] == ch)
{
return i+1;
}
}
return false;
}

string in_to_post( string infix)
{
stack <string> mystack;
string postfix = "";
int index;
for( int i = 0; i < infix.length(); i++)
{
if( infix[i] == '(')
{
mystack.push( infix.substr( i, 1));
}
else if( infix[i] >= 'a' && infix[i] <= 'z')
{
postfix += infix.substr( i, 1);
}
else if( index = check_operator( infix.substr( i, 1)))
{
while( check_operator( mystack.top()) && index < check_operator( mystack.top()))
{
postfix += mystack.top();
mystack.pop();
}
mystack.push( infix.substr( i, 1));
}
else if( infix[i] == ')')
{
while( !mystack.empty() && mystack.top() != "(")
{
postfix += mystack.top();
mystack.pop();
}
mystack.pop();
}
else
{
cout << "ERROR" << endl;
return "0";
}
}
while( !mystack.empty())
{
postfix += mystack.top();
mystack.pop();
}
return postfix;
}

int main()
{
string infix, postfix;
cin >> infix; // infix == "(" + " ... " + ")"
postfix = in_to_post( infix);
cout << postfix << endl;
return 0;
}
  • Ali Maleki

نظرات  (۱)

سلام
برای عبارت (12+13)برنامه رو اجرا کردم اما ERROR  0 رو چاپ کرد.
پاسخ:
به این دلیل که با توجه به برنامه ی نوشته شده، عملوند ها فقط شامل حروف a تا z هستند.

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی