Advertisement
Guest User

Untitled

a guest
Mar 4th, 2015
174
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.97 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <string.h>
  3. #define NMAX 100023
  4. FILE *fin, *fout;
  5. char s[NMAX], *p;
  6. int eval();
  7. int termen();
  8. int factor();
  9. int main()
  10. {
  11. fin = fopen("evaluare.in", "r");
  12. fout = fopen("evaluare.out", "w");
  13. fgets(s, NMAX, fin);
  14. p = s;
  15. fprintf(fout, "%d", eval());
  16. fclose(fin);
  17. fclose(fout);
  18. return 0;
  19. }
  20. int eval()
  21. {
  22. int r = termen();
  23. while(*p == '+' || *p == '-')
  24. {
  25. if(*p == '+') {p++;r += termen();}
  26. else {p++;r-=termen();}
  27. }
  28. return r;
  29. }
  30. int termen()
  31. {
  32. int r = factor();
  33. while(*p == '*' || *p == '/')
  34. {
  35. if(*p == '*') {p++;r*=factor();}
  36. else {p++;r/=factor();}
  37. }
  38. return r;
  39. }
  40. int factor()
  41. {
  42. int r = 0;
  43. if(*p == '(')
  44. {
  45. p++;
  46. r = eval();
  47. p++;
  48. }
  49. else
  50. {
  51. while(*p <= '9' && *p >= '0')
  52. {
  53. r = r*10 + *p - '0';
  54. p++;
  55. }
  56. }
  57. return r;
  58. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement