Pagini recente » Cod sursa (job #2609788) | Cod sursa (job #2303473) | Cod sursa (job #2474273) | Cod sursa (job #1964608) | Cod sursa (job #1251613)
#include <fstream>
#include <cstring>
#include <cctype>
using namespace std;
char sir[100005];
int n,poz;
int termen();
int factor();
int eval(){
int ans=termen();
while(1)
if(sir[poz]=='+'){
poz++;
ans+=termen();
}
else if(poz=='-'){
poz++;
ans-=termen();
}
else
break;
return ans;
}
int termen(){
int ans=factor();
while(1)
if(sir[poz]=='*'){
poz++;
ans*=factor();
}
else if(sir[poz]=='/'){
poz++;
ans/=factor();
}
else
break;
return ans;
}
int factor(){
int ans=0;
if(sir[poz]=='('){
poz++;
ans=eval();
poz++;
}
else{
while(poz<=n && isdigit(sir[poz])){
ans*=10;
ans+=(sir[poz++]-'0');
}
}
return ans;
}
int main()
{
ifstream cin("evaluare.in");
ofstream cout("evaluare.out");
cin.get(sir+1,100005);
n=strlen(sir+1);
poz=1;
cout<<eval()<<'\n';
cin.close();
cout.close();
return 0;
}