Pagini recente » Cod sursa (job #1238549) | Cod sursa (job #1488698) | Cod sursa (job #1488366) | Cod sursa (job #1291005) | Cod sursa (job #728766)
Cod sursa(job #728766)
#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;
}