Pagini recente » Cod sursa (job #1819916) | Cod sursa (job #1145379) | Cod sursa (job #1169859) | Cod sursa (job #804496) | Cod sursa (job #2788506)
///rezolvare cu varianta 3
#include <stdio.h>
#include <string.h>
#define MAXCH 100000
char s[MAXCH];
int loc;
int multiplication();
int nrCalculator();
int factor() {
int nr;
nr = 0;
while ( s[loc] >= '0' && s[loc] <= '9' ) {
nr = nr * 10 + s[loc] - '0';
loc++;
}
return nr;
}
int plus() {
int result;
result = multiplication();
while ( s[loc] == '+' || s[loc] == '-' ) {
if ( s[loc] == '+' ) {
loc++;
result += multiplication();
}
else{
loc++;
result -= multiplication();
}
}
return result;
}
int multiplication() {
int result;
result = nrCalculator();
while ( s[loc] == '*' || s[loc] == '/' ) {
if ( s[loc] == '*' ) {
loc++;
result *= nrCalculator();
}
else{
loc++;
result /= nrCalculator();
}
}
return result;
}
int nrCalculator() {
int result;
if ( s[loc] != '(' )
result = factor();
else {
loc++;
result = plus();
loc++;
}
return result;
}
int main() {
FILE *fin, *fout;
fin = fopen("evaluare.in", "r");
fgets(s, MAXCH, fin);
fclose(fin);
loc = 0;
fout = fopen("evaluare.out", "w");
fprintf(fout, "%d", plus());
fclose(fout);
return 0;
}