Pagini recente » Cod sursa (job #2378104) | Cod sursa (job #1056756) | Cod sursa (job #765223) | Cod sursa (job #2070595) | Cod sursa (job #1494430)
#include<fstream>
#include<list>
#include<iterator>
using namespace std;
ifstream in("evaluare.in");
ofstream out("evaluare.out");
bool numar(char a)
{
if(a>='0'&&a<='9') return true;
return false;
}
int rez()
{
bool impartire;
char a,operatie='+';
int b,total=0,curent=0;
while(!in.eof())
{
b=0;
in>>a;
if(a=='(')
{
b=rez();
in>>a;
}
while(!in.eof()&&numar(a))
{
b*=10;
b+=a-'0';
in>>a;
}
curent=b;
while(!in.eof()&&(a=='*'||a=='/'))
{
b=0;
if(a=='/') impartire=true;
else impartire=false;
in>>a;
if(a=='(')
{
b=rez();
in>>a;
}
while(!in.eof()&&numar(a))
{
b*=10;
b+=a-'0';
in>>a;
}
if(impartire)
curent/=b;
else
curent*=b;
}
if(operatie=='+')
{
total+=curent;
curent=0;
}
if(operatie=='-')
{
total-=curent;
curent=0;
}
if(a=='+')
operatie='+';
else
operatie='-';
if(a==')') break;
}
return total;
}
int main()
{
out<<rez();
}