Cod sursa(job #150399)

Utilizator Andrei_ScorpioAndreiana Andrei Daniel Andrei_Scorpio Data 6 martie 2008 21:52:34
Problema Evaluarea unei expresii Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.04 kb
#include<fstream.h>
#include<string.h>
ifstream f("ec.in");
ofstream g("ec.out");
char a[100001],c,b[100001],vec[100001];
long i,j,nr,v,v1;
float st[100001];
int main()
{
f.getline(a,1000);
for(i=0;i<strlen(a);i++)
	{
	if(a[i]>='0' && a[i]<='9')
		vec[nr++]=a[i];
	else
		if(a[i]=='*' || a[i]=='/')
			b[v++]=a[i];
		else
			if(a[i]=='-' || a[i]=='+')
				{
				v1=v-1;
				while(b[v1]!='-' && b[v1]!='+' && v1>=0 && b[v1]!='(')
					v1--;
				for(j=v-1;j>v1;j--)
					vec[nr++]=b[j];
				v=v1+1;
				b[v++]=a[i];
				}
			else
				if(a[i]=='(')
					b[v++]=a[i];
				else
					if(a[i]==')')
						while(b[--v]!='(')
							vec[nr++]=b[v];


	}
for(i=v-1;i>=0;i--)
	vec[nr++]=b[i];
int x=0;
for(i=0;i<nr;i++)
	if(vec[i]>='0' && vec[i]<='9')
		st[x++]=int(vec[i]-'0');
	else
		if(vec[i]=='+')
			st[x-1]+=st[--x];
		else
			if(vec[i]=='-')
				st[x-1]-=st[--x];
			else
				if(vec[i]=='*')
					st[x-1]*=st[--x];
				else
					if(vec[i]=='/')
						st[x-1]/=st[--x];
g<<st[0]<<'\n';
g.close();
return 0;
}