Pagini recente » Cod sursa (job #2682442) | Cod sursa (job #853447) | Cod sursa (job #2758263) | Cod sursa (job #3252267) | Cod sursa (job #1339434)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("evaluare.in");
ofstream out("evaluare.out");
const int maxn=100001;
char s[maxn];
char *buffer=s;
int getint()
{
int nr=0;
while(*buffer>='0'&&*buffer<='9')
nr=nr*10+*(buffer++)-'0';
return nr;
}
int termen();
int factor();
int evaluare()
{
int r=termen();
while(*buffer=='+'||*buffer=='-')
if(*buffer=='+')
{
*buffer++;
r+=termen();
}
else
{
*buffer++;
r-=termen();
}
return r;
}
int termen()
{
int r=factor();
while(*buffer=='*'||*buffer=='/')
if(*buffer=='*')
{
*buffer++;
r*=factor();
}
else
{
*buffer++;
r/=factor();
}
return r;
}
int factor()
{
int r=0;
if(*buffer=='(')
{
*buffer++;
r=evaluare();
*buffer++;
}
else
r=getint();
return r;
}
int main()
{
in.getline(s,maxn);
out<<evaluare();
return 0;
}