Pagini recente » Cod sursa (job #1995474) | oni_2012_11-12_ziua_1 | simulareoji_2010_11-12_duminica | Cod sursa (job #372777) | Cod sursa (job #3302695)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin ("evaluare.in");
ofstream fout ("evaluare.out");
long long v[100001], ind, n;
long long opg1();
long long element(){
long long numar;
numar = 0;
if(v[ind] == '('){
ind ++;
numar = opg1();
ind ++;
}
while(ind <= n && v[ind] >= '0' && v[ind] <= '9'){
numar = numar * 10 + v[ind] - '0';
ind ++;
}
return numar;
}
long long opg2(){//operatie garul 2(*, /)
long long prod;
prod = element();
while(ind <= n && (v[ind] == '*' || v[ind] == '/')){
if(v[ind] == '*'){
ind ++;
prod *= element();
}
else{
ind ++;
prod /= element();
}
// cout << "ind = " << ind << " prod = " << prod << endl;
}
return prod;
}
long long opg1(){ //-operatie gradul 1(+, -)
long long suma;
suma = opg2();
while(ind <= n && (v[ind] == '+' || v[ind] == '-')){
if(v[ind] == '+'){
ind ++;
suma += opg2();
}
else{
ind ++;
suma -= opg2();
}
// cout << "ind = " << ind << " suma = " << suma << endl;
}
return suma;
}
int main()
{
long long i;
char c;
fin.get(c);
ind = 1;
while(c != '\n'){
v[ind ++] = c;
fin.get(c);
}
n = ind;
ind = 1;
fout << opg1() << endl;
return 0;
}