Pagini recente » Cod sursa (job #1132958) | Cod sursa (job #2571727) | Cod sursa (job #2343655) | Cod sursa (job #861311) | Cod sursa (job #775305)
Cod sursa(job #775305)
#include <fstream>
char V[100100];
using namespace std;
int N, i;
int expresie();
int termen();
int factor();
int expresie() { //calculeaza si returneaza valoarea unei expresii formata din CEL PUTIN un termen
int r = termen();
while (V[i] == '+' || V[i] == '-') {
i++;
if (V[i-1] == '+')
r += termen();
else
r -= termen();
}
return r;
}
int termen() {//evalueaza un termen format din cel putin un factor
int r = factor();
while (V[i] == '*' || V[i] == '/') {
i++;
if (V[i-1] == '/')
r /= factor();
else
r *= factor();
}
return r;
}
int factor() {
int r;
if (V[i] =='(') {
i++;
r = expresie();
i++;
} else {
r = 0;
while (V[i] >='0' && V[i]<='9') {
r = r * 10 + V[i] - '0';
i++;
}
}
return r;
}
int main() {
ifstream f("evaluare.in");
ofstream g("evaluare.out");
f>>V+1;
N = strlen(V+1);
i = 1;
g<<expresie();
return 0;
}