Pagini recente » Cod sursa (job #430490) | Cod sursa (job #93461) | Cod sursa (job #875243) | Cod sursa (job #2605674) | Cod sursa (job #2082210)
#include <fstream>
using namespace std;
ifstream f("evaluare.in");
ofstream g("evaluare.out");
char s[100010], *p=s;
long factor();
long termen();
long evaluare() {
long rez = termen();
while ( *p=='+' || *p=='-' ) {
switch ( *p ) {
case '+':
++p;
rez += termen();
break;
case '-':
++p;
rez -= termen();
break;
}
}
return rez;
}
long termen() {
long rez = factor();
while ( *p=='*' || *p=='/' ) {
switch ( *p ) {
case '*' :
++p;
rez *= factor();
break;
case '/':
++p;
rez /= factor();
break;
}
}
return rez;
}
long factor() {
long rez=0;
if (*p=='(') {
++p;
rez = evaluare();
++p;
}
else {
while ( *p>='0' && *p<='9' ) {
rez = rez*10 + *p - '0';
++p;
}
}
return rez;
}
int main() {
f>>s;
g<<evaluare();
f.close();
g.close();
return 0;
}