Pagini recente » Cod sursa (job #2529794) | Cod sursa (job #601123) | Cod sursa (job #2128765) | Cod sursa (job #871612) | Cod sursa (job #689222)
Cod sursa(job #689222)
#include<fstream>
using namespace std;
const int N = 100010;
ifstream in("evaluare.in");
ofstream out("evaluare.out");
int p;
char s[N];
int expresie();
int termen();
int factor();
int expresie() {
int sum = termen();
while (s[p]=='+' || s[p]=='-') {
if (s[p]=='+') {
p++;
sum+=termen();}
else {
p++;
sum-=termen();}
}
return sum;
}
int termen() {
int prod=factor();
while(s[p]=='*' || s[p]=='/') {
if (s[p]=='*') {
p++;
prod*=factor();}
else {
p++;
prod/=factor();}
}
return prod;
}
int factor() {
int vol=0, semn=1;
while (s[p]=='-') {
semn=-semn;
p++;}
if (s[p]=='(') {
p++;
vol=expresie();
p++;
return semn*vol;}
while (s[p]>='0' && s[p]<='9') {
vol=vol*10+(s[p]-'0');
p++;
}
return semn*vol;
}
int main() {
in.getline(s,N);
out << expresie() << "\n";
return 0;
}