Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <string.h>
- #define NMAX 100023
- FILE *fin, *fout;
- char s[NMAX], *p;
- int eval();
- int termen();
- int factor();
- int main()
- {
- fin = fopen("evaluare.in", "r");
- fout = fopen("evaluare.out", "w");
- fgets(s, NMAX, fin);
- p = s;
- fprintf(fout, "%d", eval());
- fclose(fin);
- fclose(fout);
- return 0;
- }
- int eval()
- {
- int r = termen();
- while(*p == '+' || *p == '-')
- {
- if(*p == '+') {p++;r += termen();}
- else {p++;r-=termen();}
- }
- return r;
- }
- int termen()
- {
- int r = factor();
- while(*p == '*' || *p == '/')
- {
- if(*p == '*') {p++;r*=factor();}
- else {p++;r/=factor();}
- }
- return r;
- }
- int factor()
- {
- int r = 0;
- if(*p == '(')
- {
- p++;
- r = eval();
- p++;
- }
- else
- {
- while(*p <= '9' && *p >= '0')
- {
- r = r*10 + *p - '0';
- p++;
- }
- }
- return r;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement