Pagini recente » Cod sursa (job #1963667) | Cod sursa (job #415357) | Cod sursa (job #1166347) | Cod sursa (job #2401118) | Cod sursa (job #728760)
Cod sursa(job #728760)
#include <fstream>
using namespace std;
char sir[100001];
int i=0;
long termen();
long factor();
long evaluare();
long termen(){
long x = factor();
while ((sir[i] == '*') or (sir[i] == '/'))
switch (sir[i]){
case '*':
i++;
x /= factor();
break;
case '/':
i++;
x /= factor();
break;
}
return x;
}
long factor(){
long x = 0;
if (sir[i] == '('){
i++;
x = evaluare();
i++;
}
else
while (sir[i] >= '0' && sir[i] <= '9'){
x = x*10 + sir[i] - '0';
i++;
}
return x;
}
long evaluare(){
long x = termen();
while ((sir[i] == '+') or (sir[i] == '-'))
switch (sir[i]){
case '+':
i++;
x += termen();
break;
case '-':
i++;
x -= termen();
break;
}
return x;
}
int main(){
ifstream f("evaluare.in");
ofstream g("evaluare.out");
f.getline(sir, 100001);
f.close();
g<<evaluare();
g.close();
return 0;
}