Pagini recente » Istoria paginii utilizator/realmeabefir | Profil AeroH | Istoria paginii runda/simulare_11_12 | Istoria paginii utilizator/groza_iulia_diana | Cod sursa (job #2910080)
#include <bits/stdc++.h>
using namespace std;
ifstream f("evaluare.in");
ofstream g("evaluare.out");
const int N = 1e5;
char e[N + 5], *p;
int suma();
int factor();
int termen();
int main()
{
p = e;
f >> p;
g << suma();
return 0;
}
int suma(){
int rez = termen();
while (*p == '+' || *p == '-')
if (*p == '+'){
p++;
rez += termen();
}
else {
p++;
rez -= termen();
}
return rez;
}
int termen(){
int rez = factor();
while(*p == '*' || *p == '/'){
if(*p == '*') {
p++;
rez *= factor();
}
else {
p++;
rez /= factor();
}
}
return rez;
}
int factor(){
int rez = 0;
if(*p == '('){
p++;
rez = suma();
p++;
return rez;
}
while(isdigit(*p)){
rez = rez * 10 + *p - '0';
p++;
}
return rez;
}