Advertisement
Dennnhhhickk

Untitled

Dec 29th, 2016
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.08 KB | None | 0 0
  1. program Project5;
  2.  
  3. {$APPTYPE CONSOLE}
  4.  
  5. uses
  6. SysUtils;
  7.  
  8. const
  9. MAXIN = 100000;
  10.  
  11. type
  12. time = record
  13. data: integer;
  14. ch: char;
  15. end;
  16.  
  17. var
  18. i, p, sum, data, j, z, n: integer;
  19. s: string;
  20. ans: array [1..MAXIN] of time;
  21. ch: char;
  22.  
  23. begin
  24. //readln(n);
  25. //for z := 1 to n do
  26. //begin
  27. p := 0;
  28. sum := 0;
  29. readln(s);
  30. s := ' ' + s;
  31.  
  32. for i := 2 to length(s) do
  33. if (upcase(s[i]) in ['A'..'Z']) and (s[i + 1] = '-') and (s[i + 2] = '-') then
  34. begin
  35. inc(p);
  36. ans[p].ch := s[i];
  37. ans[p].data := (ord(s[i]) - 96);
  38. if (s[i - 1] = '-') then
  39. sum := sum - ans[p].data
  40. else
  41. sum := sum + ans[p].data;
  42. dec(ans[p].data);
  43. end
  44. else
  45. if (upcase(s[i]) in ['A'..'Z']) and (s[i - 1] = '-') and (s[i - 2] = '-') then
  46. begin
  47. inc(p);
  48. ans[p].ch := s[i];
  49. ans[p].data := (ord(s[i]) - 96) - 1;
  50. if (s[i - 3] = '-') then
  51. sum := sum - ans[p].data
  52. else
  53. sum := sum + ans[p].data;
  54. end
  55. else
  56. if (upcase(s[i]) in ['A'..'Z']) and (s[i + 1] = '+') and (s[i + 2] = '+') then
  57. begin
  58. inc(p);
  59. ans[p].ch := s[i];
  60. ans[p].data := (ord(s[i]) - 96);
  61. if (s[i - 1] = '-') then
  62. sum := sum - ans[p].data
  63. else
  64. sum := sum + ans[p].data;
  65. inc(ans[p].data);
  66. end
  67. else
  68. if (upcase(s[i]) in ['A'..'Z']) and (s[i - 1] = '+') and (s[i - 2] = '+') then
  69. begin
  70. inc(p);
  71. ans[p].ch := s[i];
  72. ans[p].data := (ord(s[i]) - 96) + 1;
  73. if (s[i - 3] = '-') then
  74. sum := sum - ans[p].data
  75. else
  76. sum := sum + ans[p].data;
  77. end
  78. else
  79. if (upcase(s[i]) in ['A'..'Z']) and (s[i - 1] = '-') then
  80. begin
  81. inc(p);
  82. ans[p].ch := s[i];
  83. ans[p].data := (ord(s[i]) - 96);
  84. sum := sum - ans[p].data;
  85. end
  86. else
  87. if (upcase(s[i]) in ['A'..'Z']) and (s[i - 1] = '+') then
  88. begin
  89. inc(p);
  90. ans[p].ch := s[i];
  91. ans[p].data := (ord(s[i]) - 96);
  92. sum := sum + ans[p].data;
  93. end
  94. else
  95. if (i = 2) and (upcase(s[i]) in ['A'..'Z']) then
  96. begin
  97. inc(p);
  98. ans[p].ch := s[2];
  99. ans[p].data := ord(s[2]) - 96;
  100. sum := sum + ans[p].data;
  101. end;
  102.  
  103. writeln('Expression:', s);
  104. writeln('value = ', sum);
  105.  
  106. for j := 2 to p do
  107. for i := p downto j do
  108. if (ans[i].ch < ans[i - 1].ch) then
  109. begin
  110. ch := ans[i].ch;
  111. ans[i].ch := ans[i - 1].ch;
  112. ans[i - 1].ch := ch;
  113. data := ans[i].data;
  114. ans[i].data := ans[i - 1].data;
  115. ans[i - 1].data := data;
  116. end;
  117.  
  118. for i := 1 to p do
  119. writeln(ans[i].ch,' = ', ans[i].data);
  120. //end;
  121.  
  122. readln;
  123. readln;
  124. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement