Advertisement
a53

eval

a53
Oct 8th, 2017
124
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.62 KB | None | 0 0
  1. #include <fstream>
  2. #include <cstring>
  3. using namespace std;
  4. char s[1001];
  5. int v[26],uz[26];
  6.  
  7. void elsp()
  8. {
  9. for(int i=0; s[i];)
  10. if(s[i]==' ')
  11. s[i]=0,strcat(s,s+i+1);
  12. else
  13. ++i;
  14. }
  15.  
  16. void det_var()
  17. {
  18. for(int i=0;s[i];++i)
  19. if(s[i]>='a'&&s[i]<='z')
  20. uz[s[i]-'a']=1;
  21. }
  22.  
  23. int main()
  24. {
  25. int i,semn,e=0;
  26. ifstream f("eval.in");
  27. f.getline(s,1001);
  28. f.close();
  29. for(i=0;i<26;++i)
  30. v[i]=i+1;
  31. elsp();
  32. det_var();
  33. i=0;
  34. ofstream g("eval.out");
  35. if(s[i]=='+')
  36. v[s[i+2]-'a']++,e=v[s[i+2]-'a'],i+=3;
  37. else
  38. if(s[i]=='-')
  39. v[s[i+2]-'a']--,e=v[s[i+2]-'a'],i+=3;
  40. else
  41. e=v[s[i]-'a'],++i;
  42. if(s[i]=='+'&&s[i+1]=='+')
  43. v[s[i-1]-'a']++,i+=2;
  44. else
  45. if(s[i]=='-'&&s[i+1]=='-')
  46. v[s[i-1]-'a']--,i+=2;
  47. while(s[i]) /// +/- operand
  48. {
  49. if(s[i]=='+')
  50. semn=1;
  51. else
  52. if (s[i]=='-')
  53. semn=-1;
  54. ++i;
  55. if(s[i]=='+') /// Ne ocupam de operand
  56. v[s[i+2]-'a']++,e=e+semn*v[s[i+2]-'a'],i+=3;
  57. else
  58. if(s[i]=='-')
  59. v[s[i+2]-'a']--,e=e+semn*v[s[i+2]-'a'],i+=3;
  60. else
  61. e=e+semn*v[s[i]-'a'],++i;
  62. if(s[i]=='+'&&s[i+1]=='+')
  63. v[s[i-1]-'a']++,i+=2;
  64. else
  65. if(s[i]=='-'&&s[i+1]=='-')
  66. v[s[i-1]-'a']--,i+=2;
  67. }
  68. g<<e<<'\n';
  69. for (i=0;i<26;++i)
  70. if (uz[i])
  71. g<<v[i]<<'\n';
  72. g.close();
  73. return 0;
  74. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement