Pagini recente » Borderou de evaluare (job #3367480) | Borderou de evaluare (job #3367485) | Borderou de evaluare (job #3367478) | Cod sursa (job #3367478) | Cod sursa (job #3367484)
#include <iostream>
#include <fstream>
using namespace std;
const int NMAX = 100000;
char a[NMAX + 1];
int i = 0;
int adunare();
int factor(){
int x;
if (a[i] == '('){
i++;
x = adunare();
i++;
}
else {
x = 0;
while (a[i] >= '0' && a[i] <= '9'){
x = x * 10 + a[i] - '0';
i++;
}
}
return x;
}
int inmultire(){
int x;
x = factor();
while (a[i] == '*' || a[i] == '/'){
if (a[i++] == '*'){
x = x * factor();
}
else {
x = x / factor();
}
}
return x;
}
int adunare(){
int x;
x = inmultire();
while (a[i] == '+' || a[i] == '-'){
if (a[i++] == '+'){
x = x + inmultire();
}
else {
x = x - inmultire();
}
}
return x;
}
int main()
{
int x;
FILE *fin, *fout;
fin = fopen("evaluare.in", "r");
fout = fopen("evaluare.out", "w");
fgets(a, NMAX, fin);
fprintf(fout, "%d\n", adunare());
fclose(fin);
fclose(fout);
return 0;
}