Sponsored Content
Top Forums Programming An error in my c++ program... please help urgent. Post 302505278 by Corona688 on Wednesday 16th of March 2011 02:54:27 PM
Old 03-16-2011
The code you gave didn't even work as you showed it, it went into an infinite loop...

I've tried to clean it up a little, but there's problems I don't know how to fix since I don't know what you were actually trying to do:

Code:
//Convert an infix expression to postfix expression...

#include<iostream>
#include<string>
#include<cstdlib>
using namespace std;
char ifx[50],pfx[50],stk[50];
int top=-1,n;
char push(char ch)
{
    if(top!=n)
    {
        ch=stk[top];
        top++;
        return ch;
    }
    else
        cout<<"\nThe stack is full.";
}
void pop()
{
    char rmv;
    if(top!=-1)
    {
        rmv=stk[top];
        top--;
        cout<<"\nElement removed was "<<rmv;
    }
    else
        cout<<"\nThe stack is empty.";
}
char topele()
{
    char t;
    if(top==-1)
        t='#';
    else
        t=stk[top];
    return t;
}
int chkpres()
{
    char ch;
    switch(ch)
    {
        case '^': return 5;
            break;
        case '*': return 4;
            break;
        case '/': return 3;
            break;
        case '+': return 2;
            break;
        case '-': return 1;
            break;
        default: exit(1);
            break;
    }
}
int main()
{
    int i;

    char pre,pres,ele,elem,chk,popp,topp;
    cout<<"\nEnter how many elements you want to enter in the infix expression: ";
    cin>>n;
    topp=stk[top];
    cout<<"\nEnter the characters of the infix expression one by one: ";

    // Make this its own loop to simplify the rest
    for(i=0;i<n;++i)
    {
        cin>>ifx[i];
    }
    // You can't assume the array will end in '\0', you have to put it there
    ifx[i]='\0';

    // uncommented this.  It was a good idea, but didn't 
    // work before because you forgot the !
    for(i=0;ifx[i]!='\0';++i)
    {
            // Is this really what you want it to do?  Nothing except letters
            // and brackets will make to the second if-statement.
            if(ifx[i]!='^' && ifx[i]!='*' && ifx[i]!='/' && ifx[i]!='+' && ifx[i]!='-')
                pfx[i]=ifx[i];
            // 'ele' may not even have been set yet, in which case its value will
            // be undefined.  Which could be (.  Or could be \xfe.  What do you
            // want 'ele' to be by default?  set it when you create the var.
            else if(ele=='(')
            {
                ele=ifx[i];
                push(ele);
                top++;
                // Shouldn't you set pfx[i] to something here?  Otherwise it
                // will stay at an undefined value at index i -- possibly \0,
                // possibly garbage
            }
            else if(ifx[i]=='^'||ifx[i]=='*'||ifx[i]=='/'||ifx[i]=='+'||ifx[i]=='-')
            {
                if(topp=='^'||topp=='*'||topp=='/'||topp=='+'||topp=='-')
                {
                    pre=ele;
                    pres=topp;
                    chk=chkpres();
                    if(pre>pres)
                    {
                        topp=pre;
                        top++;
                        // Shouldn't you set pfx[i] to something here?  Otherwise it
                        // will stay at an undefined value at index i -- possibly \0,
                        // possibly garbage
                    }
                    else if(pres>=pre)
                        pfx[i]=pres;
                }
            }
            // There is a huge difference between = and ==.
            // you were changing ele to ')' here.
            // 'ele' may not even have been set yet, either, see above.
            else if(ele==')')
            {
                while(topp!='#')
                {
                    popp=topp;
                    pfx[i]=popp;
                }
            }
       // }
    }

    // You can't assume the array will end in '\0', you have to put it there
    pfx[i]='\0';

    cout<<"\nThe postfix expression is: ";
    for(i=0; pfx[i]!='\0'; ++i)
    {
        cout<<pfx[i];
    }
return 0;
}

So I can't fix it outright but I hope I've given you a better idea of what's going wrong.
This User Gave Thanks to Corona688 For This Post:
 

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

Urgent!! How to write a shell program to execute command to access internet?

hi, I am new ot unix. So, can i write a shell(c shell or korn shell) program to access internet? I mean if I run the program, it can access specified url and then copy the html to a file? Can anyone help me? And how can make the program runs every 1 hr? new comer (2 Replies)
Discussion started by: firebirdonfire
2 Replies

2. Shell Programming and Scripting

Very Urgent help required in Shell Program

How do I Ftp, and rename multiple files in one unix script. I have to send it with .tmp extension , then rename it to .txt after FTP is done . I need to do a Mass rename of more than 1 file in a shell script , Urgent help required. (1 Reply)
Discussion started by: Suppandi
1 Replies

3. SCO

memfs.fs I/O Error - urgent attention please

Hy guys, During installation of machine (Pentium x86, 64MB RAM), well during booting SCO UnixWARE 7.1.1 diskette 1/2 i get following error (after SCO logo) "memfs.fs: I/0 error or unexpected EOF" Bootstrap Command Processor ... _ Please advise! (2 Replies)
Discussion started by: R@LE
2 Replies

4. AIX

URGENT:Program is not dropping core on customer AIX Machine

hi We have a program which is running on cutomer end,and when its crashing its not dropping core, we asked them to check ulimit,they say that its unlimited. Even when they crash the program manually by using command kill -ABRT <pid> its not dropping the core,on our end when we use same... (1 Reply)
Discussion started by: khan_069
1 Replies

5. Solaris

[need help urgent]error cpu messages

hi sun experts, i have problem with my server sun fire v240, if i run application the server will restarting itself and i got some error messages like this: Mar 21 15:15:03 sun ^Mpanic/thread=2a10094bd40: Mar 21 15:15:04 sun unix: BAD TRAP: type=34 rp=2a10094b660 addr=30005566764... (0 Replies)
Discussion started by: bucci
0 Replies

6. UNIX and Linux Applications

Urgent---Program for getting Exception from a log

Hi Friends, I am new to Unix, Now I am Working with shell scripting in my company Description:-By executing that script I need to get the exception from the log file I need the program for getting the Exceptions from the logfile,,and that program should be generic...I mean if i want to... (5 Replies)
Discussion started by: Anji
5 Replies

7. Shell Programming and Scripting

Program Bash VERY URGENT

Hello I have to do a program in Bash, need help because it does not go out for me and go enough time with this!! Five directories(boards of directors) that more occupy, arranged according to size. To measure the size of every directory(board of directors) there must not be included the size... (1 Reply)
Discussion started by: danihj
1 Replies

8. Programming

urgent help with file manipulation program

Hey, i am trying to write a program that takes multiple files as command line arguments, then outputs them to a single file. i also need the option to read them back out again. essentially what i am trying to create is an archiver, however, a very simple one. The program i have accomplished so far... (1 Reply)
Discussion started by: wezzyb
1 Replies

9. Programming

Wrapper for unix program - urgent help needed

Hello all , i need some help asap i have a program that keeps killing the machine when i did google searches and 2 days later i ran strace it seems the programm keeps making a system call to gettimeofday to i guess increment a counter ? gettimeofday({1347986584, 464904}, NULL) = 0... (6 Replies)
Discussion started by: NetworkLearning
6 Replies

10. Programming

Urgent help needed.. C++ program to convert decimal to hexa decimal

Hi , seq can be 0...128 int windex = seq / 8; int bindex = seq % 8; unsigned char bitvalue = '\x01' << (7-bindex) ; bpv.bitmapvalue = bitvalue; This is the part of a program to convert decimal to bitmap value of hexadecimal. I want this to change to convert only to... (1 Reply)
Discussion started by: greenworld123
1 Replies
All times are GMT -4. The time now is 07:19 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy