Pagini recente » Cod sursa (job #2305067) | Cod sursa (job #1567049) | Cod sursa (job #2265851) | Cod sursa (job #843571) | Cod sursa (job #1139872)
#include <fstream>
using namespace std;
const int N = 100000;
char s[N], *poz;
ifstream in("evaluare.in");
ofstream out("evaluare.out");
int expresie(), factor(), termen();
int expresie(){
int ans = termen();
while (*poz == '+' || *poz == '-')
if (*poz == '+'){
++poz;
ans += termen();
} else {
++poz;
ans -= termen();
}
return ans;
}
int termen(){
int ans = factor();
while (*poz == '*' || *poz == '/')
if (*poz == '*'){
++poz;
ans *= factor();
} else {
++poz;
ans /= factor();
}
return ans;
}
int factor(){
int ans = 0;
if ( *poz == '('){
ans = expresie();
poz++;
return ans;
}
while ( cifra(*poz) ){
ans = ans * 10 + *poz - '0';
poz++;
}
return ans;
}
int main(){
in >> s;
poz = s;
out << expresie() << "\n";
return 0;
}