Pagini recente » Cod sursa (job #292409) | Cod sursa (job #285276) | Cod sursa (job #2917380) | Cod sursa (job #2917490) | Cod sursa (job #1471673)
#include <fstream>
using namespace std;
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
const int MAX = 100001;
char s[MAX], *p = s;
int eval();
int termen();
int factor();
int main()
{
fin>>s;
fout<<eval();
return 0;
}
int eval(){
int ans = termen();
while(*p=='+' or *p=='-'){
if(*p=='+'){
p++;
ans = ans + termen();
}
else{
p++;
ans = ans - termen();
}
}
return ans;
}
int termen(){
int ans = factor();
while(*p=='*' or *p=='/'){
if(*p=='*'){
p++;
ans = ans * factor();
}
else{
p++;
ans = ans / factor();
}
}
return ans;
}
int factor(){
int ans = 0;
if(*p=='('){
p++; //'('
ans = eval();
p++; //')'
}
else
while('0'<=*p and *p<='9'){
ans = ans*10 + *p - '0';
p++;
}
return ans;
}