Cod sursa(job #966284)

Utilizator dropsdrop source drops Data 25 iunie 2013 17:28:49
Problema Evaluarea unei expresii Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
#include <deque>
#include <list>
#include <string>
#include <algorithm>
using namespace std;
ifstream ff("evaluare.in");
ofstream gg("evaluare.out");

int i=0;
string ss;
int exp();

int trm(){
	int x=0;
	if(ss[i]=='('){ i++; x=exp(); i++; } else {
		while('0'<=ss[i]&&ss[i]<='9') x=x*10+ss[i++]-'0';
	}
	return x;
}

int fct(){
	int x = trm();
	while(ss[i]=='*'||ss[i]=='/'){
		if(ss[i]=='*'){ i++; x*=fct(); } else
		if(ss[i]=='/'){ i++; x/=fct(); }
	}
	return x;
}

int exp(){
	int x = fct();
	while(ss[i]=='+'||ss[i]=='-'){
		if(ss[i]=='+'){ i++; x+=fct(); } else
		if(ss[i]=='-'){ i++; x-=fct(); };
	}
	return x;
}

int main(){
	ff >> ss;
	gg << exp();
	return 0;
}