Pagini recente » Cod sursa (job #1079212) | Cod sursa (job #253169) | Cod sursa (job #580396) | Cod sursa (job #299590) | Cod sursa (job #726854)
Cod sursa(job #726854)
#include<fstream>
#define max 100001
using namespace std;
char sir[max];
int i=0;
long termen();
long factor();
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;
}
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;
}
int main(){
ifstream f("evaluare.in");
ofstream g("evaluare.out");
f.getline(sir, max);
g<<evaluare();
g.close();
f.close();
return 0;
}