Wacky_rubia

Untitled

Mar 12th, 2014
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.06 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6.  
  7. namespace ConsoleApplication54
  8. {
  9. class Program
  10. {
  11. static string ToPr(string s)
  12. {
  13. char temp = '';
  14. var rez = new StringBuilder();//строка вывода
  15. var stack = new Stack<string>();
  16. var i = 0;
  17. var priority = new Dictionary<char, int>();
  18. priority.Add('(', 0);
  19. priority.Add(')', 1);
  20. priority.Add('+', 2);
  21. priority.Add('-', 2);
  22. priority.Add('*', 3);
  23. priority.Add('/', 3);
  24. priority.Add('^', 4);
  25. for (;i<s.Length;i++)
  26. {
  27. if (s[i] == '(')
  28. {
  29. stack.Push("(");
  30. }
  31. else
  32. if (s[i] == ')')
  33. {
  34. while (stack.Peek() != "(")
  35. {
  36. rez.Append(stack.Pop());
  37. }
  38. stack.Pop();
  39. }
  40. else
  41. if (priority.ContainsKey(s[i]))
  42. {
  43. temp = s[i];
  44. while (true)
  45. if (priority[temp] <= priority[stack[u]])
  46. {
  47. rez += stack[u].toString();
  48. u--;
  49. }
  50. else break;
  51. u++;
  52. stack[u] = temp;
  53. }
  54. else
  55. if (s.charAt(i) == ' ') ;
  56. else
  57. {
  58. rez += s.charAt(i).toString();
  59. if (i>0)
  60. if (stack[u] == '~')
  61. {
  62. rez += stack[u].toString();
  63. u--;
  64. }
  65. }
  66. }
  67. }
  68. for (; u >= 0; u--)
  69. {
  70. rez += stack[u].toString();
  71. }
  72. return rez;
  73. }
  74. static void Main(string[] args)
  75. {
  76.  
  77.  
  78.  
  79. function ToInf(s)
  80. {
  81. var pred = "";
  82. var pr = [];
  83. var rez = "";//строка вывода
  84. var stuck = [];
  85.  
  86. var u = -1;//u - указатель на текущую позицию в стеке
  87. var i = 0;
  88.  
  89. var priority = [];
  90. priority['('] = 0;
  91. priority[')'] = 1;
  92. priority['+'] = 2;
  93. priority['-'] = 2;
  94. priority['~'] = 2;
  95. priority['*'] = 3;
  96. priority['/'] = 3;
  97. priority['^'] = 4;
  98.  
  99. var i = 0;
  100. for (i=0;i<s.length;i++)
  101. {
  102. if (s.charAt(i) == '~')
  103. {
  104. if ((u == 0) && (stuck[u].length == 1))
  105. stuck[u] = '-' + stuck[u];
  106. else
  107. if (stuck[u].length == 1)
  108. stuck[u] = '(' + ('-' + (stuck[u] + ')'));
  109. else
  110. {
  111. stuck[u] = '-' + ('(' + (stuck[u] + ')'));
  112. if (s.charAt(i+1) in priority)
  113. stuck[u] = '(' + (stuck[u] + ')');
  114. }
  115. pr[u] = 2;
  116. }
  117. else
  118. {
  119. if ((s.charAt(i) == '+') || (s.charAt(i) == '-') ||
  120. (s.charAt(i) == '/') || (s.charAt(i) == '*') ||
  121. (s.charAt(i) == '^'))
  122. {
  123. if (pr[u] < priority[s.charAt(i)])
  124. {
  125. stuck[u] = '(' + (stuck[u] + ')');
  126. }
  127. if (pr[u-1] < priority[s.charAt(i)])
  128. {
  129. stuck[u-1] = '(' + (stuck[u-1] + ')');
  130. }
  131. pred = s.charAt(i);
  132. stuck[u-1] = stuck[u-1] + (s.charAt(i) + stuck[u]);
  133. pr[u-1] = priority[s.charAt(i)];
  134. u--;
  135. }
  136. else
  137. if (s.charAt(i) == ' ') ;
  138. else
  139. {
  140. u++;
  141. stuck[u] = s.charAt(i);
  142. pr[u] = 5;
  143. }
  144. }
  145. }
  146. var rez ="";
  147. for (i=0; i<=u; i++)
  148. rez += stuck[i].toString();
  149. WSH.Echo(rez);
  150. return rez;
  151. }
  152.  
  153.  
  154.  
  155.  
  156.  
  157. //Здесь начинается сама программа!!!)
  158. var fso = new ActiveXObject("Scripting.FileSystemObject");
  159. if (WScript.arguments.length == 0)
  160. {
  161. WSH.Echo ("File is not exist");
  162. WScript.Quit();
  163. }
  164. if (fso.FileExists(WScript.arguments(0)))
  165. var text = fso.OpenTextFile(WScript.arguments(0));
  166. else
  167. {
  168. WSH.Echo ("File is not exist");
  169. WScript.Quit();
  170. }
  171.  
  172. var s="";
  173. s = text.ReadAll();
  174. text.close();
  175. if (WScript.arguments.length == 1)
  176. {
  177. WSH.Echo ("Operation is not exist");
  178. WScript.Quit();
  179. }
  180. if (WScript.arguments(1) == "InfToPr")//из инфексной в префиксную
  181. {
  182. var k = "";
  183. var i = 0;
  184. for (i=0;i<s.length;i++)
  185. if (s.charAt(i) != ' ') k += s.charAt(i).toString();
  186. var s = ToPr(s);
  187. if (ToInf(s) == k) WSH.Echo(s);
  188. else WSH.Echo("wrong expression");
  189. }
  190. else
  191. if (WScript.arguments(1) == "PrToInf")//из префиксной в инфексную
  192. {
  193. var k = "";
  194. var i = 0;
  195. for (i=0;i<s.length;i++)
  196. if (s.charAt(i) != ' ') k += s.charAt(i).toString();
  197. var s = ToInf(s);
  198. if (ToPr(s) == k) WSH.Echo(s);
  199. else WSH.Echo("wrong expression");
  200. }
  201. else//если ни то, ни то
  202. WSH.Echo("unknown command");
  203. WScript.Quit();
  204. }
  205. }
  206. }
Advertisement
Add Comment
Please, Sign In to add comment