miladanimator
Active Member
سلام دوستان.
من یک برنامه باید داشته باشم که یک عبارت infix رو دریافت کنه و یک عبارت prefix رو بده
حالا من کد زیر رو visual studio نوشتم :
اما موقع اجرا زمانی که ورودی بهش میدم (مثلا ورودی a+b/e) با خطائی که در عکس هست مواجه می شم . کسی می تونه کمک کنه این خطا از چیه ؟ کجای کد مشکل داره؟
من یک برنامه باید داشته باشم که یک عبارت infix رو دریافت کنه و یک عبارت prefix رو بده
حالا من کد زیر رو visual studio نوشتم :
کد:
#include <stdafx.h>
#include <iostream>
#include <cstdlib>
#include <string.h>
#include <stack>
using namespace std;
int priority(char op);
int main()
{
char ar[80];
stack<char> s_1, s_2;
cin >> ar;
int length = strlen(ar);
for(int i = length - 1; i >= 0; i--)
{
switch(ar[i])
{
case '(':
s_1.push(ar[i]);
break;
case ')':
{
while(s_1.top() != '(')
{
s_2.push(s_1.top());
s_1.pop();
}
s_1.pop();
break;
}
case '+': case '-': case '*': case '/':
{
while(priority(s_1.top()) > priority(ar[i]))
{
s_2.push(s_1.top());
s_1.pop();
}
s_1.push(ar[i]);
break;
}
default:
{
s_2.push(ar[i]);
break;
}
}
}
while(!s_1.empty())
{
s_2.push(s_1.top());
s_1.pop();
}
while(!s_2.empty())
{
cout << s_2.top();
s_2.pop();
}
cout << endl;
system("PAUSE");
return EXIT_SUCCESS;
}
int priority(char op)
{
int p;
switch (op)
{
case '+' :
case '-' :
p = 1;
break;
case '*' :
case '/' :
p = 2;
break;
default:
p = 0;
break;
}
return p;
}
پیوست ها
آخرین ویرایش: