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.
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)