Pagini recente » Cod sursa (job #2168603) | Cod sursa (job #1753551) | Cod sursa (job #2033351) | Cod sursa (job #2530112) | Cod sursa (job #1993520)
#include <fstream>
using namespace std;
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
char s[100002];
int k;
long termen();
long factor();
long evaluare()
{
long nr=termen();
while (s[k]=='+' || s[k]=='-')
switch(s[k])
{
case '+':
k++;
nr+=termen();
break;
case '-':
k++;
nr-=termen();
break;
}
return nr;
}
long termen()
{
long nr=factor();
while (s[k]=='*' || s[k]=='/')
switch(s[k])
{
case '*':
k++;
nr*=factor();
break;
case '/':
k++;
nr/=factor();
break;
}
return nr;
}
long factor()
{
long nr=0;
if (s[k]=='(')
{
k++;
nr=evaluare();
k++;
}
else
while (s[k]>='0' && s[k]<='9')
{
nr=nr*10+s[k]-'0';
k++;
}
return nr;
}
int main()
{
fin.getline(s,100002);
fout << evaluare();
return 0;
}