Pagini recente » Cod sursa (job #2620470) | Cod sursa (job #441359) | Atasamentele paginii Poze preONI 2007 - deschidere | Cod sursa (job #1234382) | Cod sursa (job #705104)
Cod sursa(job #705104)
//expresie
#include <fstream>
using namespace std;
ifstream in ("evaluare.in");
ofstream out ("evaluare.out");
const int N=100010;
int p;
char s[N];
int expresie();
int termen();
int factor();
int expresie() {
int sum=termen();
while (s[p]=='+' || s[p]=='-') {
if (s[p]=='+') {
p++;
sum+=termen();
}
else {
p++;
sum-=termen();
}
}
return sum;
}
int termen() {
int val=factor();
while (s[p]=='*' || s[p]=='/') {
if (s[p]=='*') {
p++;
val*=s[p];
}
else {
p++;
val/=s[p];
}
}
return val;
}
int factor() {
int val=0, semn=1;
while (s[p]=='-') {
p++;
semn=-semn;
}
while (s[p]=='(') {
p++;
val=expresie();
p++;
return val*semn;
}
while (s[p]>='0' && s[p]<='9') {
val=val*10+(s[p]-'0');
p++;
}
return val*semn;
}
int main() {
in.getline(s, N);
out << expresie;
}