All pastes #464608 Raw Edit

Unnamed

public text v1 · immutable
#464608 ·published 2007-04-29 16:40 UTC
rendered paste body
#include<iostream>
#include<string>
using namespace std;

char array[40000];
int minus_table[900],minus_count=-1;
int top=-1,len,j=0,flag=0;
bool number_displayed;
unsigned long int c=0;

void minus_display()
{
    if((minus_count>=0)&&(minus_table[minus_count]!=-1))
    {
        for(int i=0;i<minus_table[minus_count];i++)
                cout<<" n ";
        minus_count--;
    }    
}    


int main()
{
    char  *input=new char[40000];
    while(cin>>input[c++])
    len=strlen(input);
    while(j<len)
    {
        number_displayed=false;
        while((input[j]>='0')&&(input[j]<='9'))
        {
            cout<<input[j];
            number_displayed=true;
            j++;
        }
        cout<<" ";
        if((number_displayed==true))
                minus_display(); 
        else if((input[j]=='-')&&((input[j-1]=='+')||(input[j-1]=='-')||(input[j-1]=='/')||(input[j-1]=='*')||(input[j-1]=='(')||j==0))
        {
                if((minus_table[minus_count]!=-1)&&(minus_count>=0))
                                minus_table[minus_count]+=1;
                else
                                minus_table[++minus_count]=1;
                j++;
        }    
        else if((input[j]=='-')||(input[j]=='+'))
        {
            while((array[top]!='(')&&(top>=0))
                   cout<<array[top--]<<" ";
            array[++top]=input[j++];
        }
        else if(input[j]=='(')
        {
            array[++top]='(';
            minus_table[++minus_count]=-1;
            j++;
        }    
        else if((input[j]=='*')||(input[j]=='/'))
        {
            while(((array[top]=='*')||(array[top]=='/'))&&(top>=0))
                   cout<<array[top--]<<" ";
            array[++top]=input[j++];
        }
        else if(input[j]==')')
        {
            while((array[top]!='(')&&(top>=0))
                   cout<<array[top--]<<" ";
            top--;
            j++;
            minus_count--;
            minus_display();
        }
        else 
            j++;
       }
    while(top>=0)
        cout<<array[top--]<<" ";
  return 0;
}