Pagini recente » Cod sursa (job #577404) | Cod sursa (job #2593654) | Cod sursa (job #2104018) | Cod sursa (job #575166) | Cod sursa (job #832237)
Cod sursa(job #832237)
#include <iostream>
#include <fstream>
using namespace std;
fstream in("evaluare.in", ios::in),
out("evaluare.out");
char s[100001],*p;
int expresie();
int termen();
int factor();
bool cifra(char c);
int main()
{
int sum;
p=s;
in.getline(s,100001);
sum=expresie();
out<<sum<<'\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 prod=factor();
while(*p=='*'||*p=='/'){
if(*p=='*'){
p++;
prod*=factor();
}else{
p++;
prod/=factor();
}
}
return prod;
}
int factor(){
int val=0,semn=1;
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 c){
if(c>='0'&&c<='9')
return true;
return false;
}