Pagini recente » Borderou de evaluare (job #3367478) | Cod sursa (job #3367478) | Cod sursa (job #3367484) | Cod sursa (job #3367487) | Cod sursa (job #3367480)
#include <iostream>
using namespace std;
#define MAXS 100000
char s[MAXS];
int sIndex;
int adunare();
int factor(){
int nr = 0;
if(s[sIndex] == '('){
sIndex++;
nr = adunare();
sIndex++;
}
else{
while(s[sIndex] >= '0' && s[sIndex] <= '9'){
nr = nr * 10 + s[sIndex] - '0';
sIndex++;
}
}
return nr;
}
int inmultire(){
int rez;
rez = factor();
while(s[sIndex] == '*' || s[sIndex] == '/'){
if(s[sIndex++] == '*'){
rez *= factor();
}
else{
rez /= factor();
}
}
return rez;
}
int adunare(){
int rez;
rez = inmultire();
while(s[sIndex] == '+' || s[sIndex] == '-'){
if(s[sIndex++] == '+'){
rez += inmultire();
}
else{
rez -= inmultire();
}
}
return rez;
}
int main()
{
FILE *fin, *fout;
fin = fopen("evaluare.in", "r");
fout = fopen("evaluare.out", "w");
fgets(s, MAXS, fin);
sIndex = 0;
fprintf(fout, "%d", adunare());
fclose(fin);
fclose(fout);
return 0;
}