Pagini recente » Cod sursa (job #352874) | Cod sursa (job #2774476) | Cod sursa (job #1542664) | Cod sursa (job #30786) | Cod sursa (job #2742787)
#include<iostream>
#include<fstream>
#include<cstring>
using namespace std;
int n, poz;
char s[100000];
int eval();
int termen();
int factor();
int eval()
{
int a= termen(), b;
while(s[poz]=='+' || s[poz]=='-')
{
if(s[poz]=='+')
{
++poz;
b= termen();
a=a+b;
}
else {
++poz;
b=termen();
a=a-b;
}
}
return a;
}
int termen()
{
int a= factor(),b;
while(s[poz]=='*' || s[poz]=='/')
{
if(s[poz]=='*')
{
++poz;
b= factor();
a=a*b;
}
else {
++poz;
b=factor();
a=a/b;
}
}
return a;
}
int factor()
{
int a;
if(s[poz]=='(')
{
++poz;
a=eval();
++poz;
}
else
{ a=0;
while(poz<n && strchr("0123456789",s[poz])){
a=a*10+s[poz]-'0';poz++;}
}
return a;
}
int main()
{
freopen("evaluare.in","r",stdin);
freopen("evaluare.out","w",stdout);
cin>>s;
n=strlen(s);
cout<<eval();
}