Инфикс Для постфикса Evaluation с использованием стека и массива - PullRequest
0 голосов
/ 28 мая 2018

Я пытаюсь преобразовать инфикс в постфикс, но не могу получить никакого вывода, хотя программа не содержит ошибок и логически корректна.это просто показывает значение м.Я попытался напечатать привет внутри цикла, но он не смог напечатать это. Я не могу понять, почему он не идет внутри цикла.Не могу понять точную причину этого.

#include <bits/stdc++.h>
#define m 21
using namespace std;
int isitoperattor(char c) //to find precdenec of operator 
{
if(c=='+'||c=='-')
    return 1;
if(c=='*' || c=='/')
    return 2;
if(c=='('||c==')')
    return 3;
 }
  void infixtopostfix(char str[m]){
   char out[m];

  cout<<m<<endl;
  stack <char> s;
static int k;
for(int i=0;i<m;i++)

{

    cout<<"hello";
   if((str[i]>='a' && str[i]<='z') || (str[i]>='A' && str[i]<='Z')){
    out[k]=str[i];
     k++;}

    else if (str[i]=='(')
        s.push(str[i]);

    else if (str[i]==')'){
        //int j=i-1;
        while(s.top()!='('){

            out[k]=s.top();
            s.pop();
            k++;
            //-;
        }
        s.pop();
    }
    else 
    {   


            if(isitoperattor(str[i]) && (isitoperattor(str[i])<isitoperattor(s.top()))){
                while(isitoperattor(s.top())>=isitoperattor(str[i])){        
                      out[k]=s.top();
                      s.pop();
                      k++;
                      }
                     }

        }
            s.push(str[i]);

    }
}
while(!s.empty())
{
    out[k]=s.top();
    s.pop();
    k++;
}

//string out;

    for(int j=0;j<k;j++)
        cout<<out[j];
}
 int main()
{

  char str[m]="a+b*(c^d-e)^(f+g*h)-i";

   infixtopostfix(str);
   return 0;
}
...