Pagini recente » Cod sursa (job #1320129) | Cod sursa (job #3176552) | Cod sursa (job #3255732) | Cod sursa (job #1397400) | Cod sursa (job #832244)
Cod sursa(job #832244)
#include <fstream>
using namespace std;
ifstream d("evaluare.in");
ofstream g("evaluare.out");
char s[100001], *p;
bool cifra(char t);
int termen();
int factor();
int expresie();
int main()
{
d.getline(s,100001);
p=s;
g<<expresie()<<'\n';
return 0;
}
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 semn=1,val=0;
while(*p=='-'){
p++;
semn=-semn;
}
if(*p=='('){
p++;
val=expresie();
p++;
return val*semn;
}
while(cifra(*p)){
val=val*10+(*p-'0');
p++;
}
return semn*val;
}
bool cifra(char t){
return (t>='0'&&t<='9');
}