Pagini recente » Cod sursa (job #246286) | Cod sursa (job #1286823) | Cod sursa (job #2970911) | Cod sursa (job #1360810) | Cod sursa (job #1674723)
#include <iostream>
#include <fstream>
using namespace std;
char s[100002];
int pos;
long termen();
long factor();
long eval()
{
long r=termen();
while(s[pos]=='+' || s[pos]=='-')
{
if(s[pos]=='+')
{
pos++;
r+=termen();
}
else if(s[pos]=='-')
{
pos++;
r-=termen();
}
}
return r;
}
long termen()
{
long r=factor();
while(s[pos]=='*' || s[pos]=='/')
{
if(s[pos]=='*')
{
pos++;
r*=factor();
}
else if(s[pos]=='/')
{
pos++;
r/=factor();
}
}
return r;
}
long factor()
{
long r=0;
if(s[pos]=='(')
{
pos++;
r=eval();
pos++;
}
else
while(isdigit(s[pos]))
{
r=r*10+(s[pos]-'0');
pos++;
}
return r;
}
int main()
{
ifstream f("evaluare.in");
ofstream g("evaluare.out");
f>>s;
g<<eval();
f.close();
g.close();
return 0;
}