View Code of Problem 94

#include<stdio.h>
int main()
{
	char s[1000],a[1000];
	int b[1000];
	int i,j,k,top1=-1,top2=-1;
	gets(s);
	for(i=0;s[i]!='\0';i++)
	{
		if(s[i]=='(')
		{
			b[++top2]=-99999;
		}
		if(s[i]=='+'||s[i]=='-'||s[i]=='*'||s[i]=='/')
		{
			a[++top1]=s[i];
		}
		if(s[i]>='0'&&s[i]<='9')
		{
			b[++top2]=s[i]-'0';
		}
		if(s[i]==')')
		{
			int sum=0;
			if(a[top1]=='+')
			{
				while(b[top2]!=-99999)
				{
					sum+=b[top2--]; 
				}
				b[top2]=sum;
			}
			else if(a[top1]=='*')
			{
				sum=1;
				while(b[top2]!=-99999)
				{
					sum*=b[top2--];
				}
				b[top2]=sum;
			}
			else if(a[top1]=='/')
			{
				sum=1;
				while(b[top2-1]!=-99999)
				{
					sum*=b[top2--];
				}
				sum=b[top2--]/sum;
				b[top2]=sum;
			}
			else if(a[top1]=='-')
			{
				while(b[top2-1]!=-99999)
				{
					sum+=b[top2--];
				}
				sum=b[top2--]-sum;
				b[top2]=sum;
			}
			top1--;
		} 
	}
	printf("%d\n",b[0]);
}

Double click to view unformatted code.


Back to problem 94