Pagini recente » Cod sursa (job #2275035) | Cod sursa (job #2388848) | Cod sursa (job #1915172) | Cod sursa (job #1487221) | Cod sursa (job #832245)
Cod sursa(job #832245)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("evaluare.in");
ofstream out("evaluare.out");
char s[100001], *p;
int expresie();
int termen();
int factor();
bool cifra(char c);
int expresie()
{
int s=termen();
while(*p=='+'||*p=='-')
{
if(*p=='+')
{
p++;
s+=termen();
}
else{
p++;
s-=termen();
}
}
return s;
}
int termen()
{
int s=factor();
while(*p=='*'||*p=='/')
{
if(*p=='*')
{
p++;
s*=factor();
}
else{
p++;
s/=factor();
}
}
return s;
}
int factor()
{
int val=0, semn=1;
while(*p=='-')
{
p++;
semn=-semn;
}
if(*p=='(')
{
p++;
val=expresie();
p++;
return semn*val;
}
while(cifra(*p))
{
val=val*10+(*p-'0');
p++;
}
return semn*val;
}
bool cifra(char c)
{
if('0'<=c && c<='9')
{
return true;
}
return false;
}
int main()
{
int sum;
in.getline(s,100000);
p=s;
sum=expresie();
out<<sum<<'\n';
return 0;
}