Pagini recente » Cod sursa (job #1360025) | Cod sursa (job #3291712) | Cod sursa (job #1940563) | Cod sursa (job #2844927) | Cod sursa (job #3272357)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
int i=0;
char s[100001];
long long expresie();
long long termen();
long long factor();
long long expresie(){
long long rez = termen();
while(s[i] == '+' || s[i] == '-'){
if(s[i] == '+'){i++; rez += termen();}
else{i++;rez -= termen();}
}
return rez;
}
long long termen(){
long long rez= factor();
while(s[i]=='*' || s[i]=='/'){
if(s[i]=='*'){
i++;
rez=rez*factor();
}
else{
i++;
rez=rez/factor();
}
}
return rez;
}
long long factor(){
// i este la inceput
long long rez;
if( s[i]=='('){
i++;
rez= expresie();
i++;
}
else{
// 2345+
// i.. i
rez=0;
while(s[i] >= '0' && s[i] <= '9'){
rez = rez * 10 + (s[i] - '0');
i++;
}
}
return rez;
}
int main()
{
fin>>s;
fout<<expresie();
return 0;
}