Pagini recente » Cod sursa (job #1797659) | Cod sursa (job #899165) | Cod sursa (job #1173951) | Cod sursa (job #722204) | Cod sursa (job #1497819)
#include <iostream>
#include <fstream>
#include <string.h>
#define nmax 100000000
using namespace std;
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
long i,lg;
char s[100009];
long expresie();
long evaluare()
{
long a=0;
while(s[i]<='9' && s[i]>='0' && i<lg)
{a=a*10+s[i]-'0';i++;}
return a;
}
long factor()
{long rez;
if(s[i]=='(')
{i++;
rez=expresie();
i++;return rez;
}
rez=evaluare();
return rez;
}
long termen()
{long rez=factor();
while(i<lg && (s[i]=='*' || s[i]=='/'))
if(s[i]=='*')
{i++;rez*=termen();}
else {i++;rez/=termen();}
return rez;
}
long expresie()
{long rez=termen();
while(i<lg && (s[i]=='+' || s[i]=='-'))
if(s[i]=='+')
{i++;rez+=termen();}
else {i++;rez-=termen();}
return rez;
}
int main()
{
fin.getline(s,100009);
lg=strlen(s);
fout<<expresie();
}