Pagini recente » Cod sursa (job #2377028) | Cod sursa (job #1250784) | Cod sursa (job #869647) | Cod sursa (job #2739151) | Cod sursa (job #1217136)
#include <fstream>
#include <cstring>
#define MX 100005
using namespace std;
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
int l,k;
char s[MX];
int expresie();
int numar()
{
int nr=0;
while(s[k]>='0' && s[k]<='9')
{
nr = nr*10 + s[k] - '0';
k++;
}
return nr;
}
int factor()
{
int nr=0;
if(s[k]=='(')
{
k++;
nr = expresie();
k++;
}
else
{
nr = numar();
}
return nr;
}
int termen()
{
int nr=factor();
while(s[k]=='*' || s[k]=='/')
{
if(s[k++]=='*') nr *= factor();
else nr /= factor();
}
return nr;
}
int expresie()
{
int nr=termen();
while(s[k]=='+' || s[k]=='-')
{
if(s[k++]=='+') nr += termen();
else nr -= termen();
}
return nr;
}
int main()
{
fin>>s;
l = strlen(s);
fout<<expresie();
fin.close(); fout.close();
}