Advertisement
Aminadil

Untitled

Jan 16th, 2018
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.09 KB | None | 0 0
  1. ОТДЕЛ ОПН;
  2. ПЕР
  3. Стек: РЯД 20H ИЗ ЗНАК;
  4.  
  5. ЗАДАЧА Преимущество(зн: ЗНАК): ЦЕЛ;
  6. УКАЗ
  7. ВЫБРАТЬ зн ИЗ
  8. '*', '/': ВОЗВРАТ 3
  9. | '-', '+': ВОЗВРАТ 2
  10. | '(', ')': ВОЗВРАТ 1
  11. ИНАЧЕ
  12. ВОЗВРАТ 0
  13. КОН
  14. КОН Преимущество;
  15.  
  16. ЗАДАЧА Добавить(зн: ЗНАК);
  17. УКАЗ
  18. ЕСЛИ ДЛИНА(Стек) = РАЗМЕР(Стек) ТО
  19. Вывод.Цепь("Ошибка: стек переполнен.");
  20. СТОП(0)
  21. КОН;
  22. Стек[ДЛИНА(Стек)] := зн
  23. КОН Добавить;
  24.  
  25. ЗАДАЧА Удалить(): ЗНАК;
  26. ПЕР
  27. зн: ЗНАК;
  28. УКАЗ
  29. ЕСЛИ ДЛИНА(Стек) = 0 ТО
  30. Вывод.Цепь("Ошибка: стек пуст.");
  31. СТОП(0)
  32. КОН;
  33. зн := Стек[ДЛИНА(Стек)-1];
  34. Стек[ДЛИНА(Стек)-1] := 0X;
  35. ВОЗВРАТ зн
  36. КОН Удалить;
  37.  
  38. ЗАДАЧА Перевести(вход-, выход+: РЯД ИЗ ЗНАК);
  39. ПЕР
  40. сч1, сч2: УЗКЦЕЛ;
  41. зн: ЗНАК;
  42. УКАЗ
  43. зн := 0X; сч2 := 0;
  44. ОТ сч1 := 0 ДО ДЛИНА(вход)-1 ВЫП
  45. ЕСЛИ вход[сч1] = ")" ТО
  46. ПОКА Стек[ДЛИНА(Стек)-1] # "(" ВЫП
  47. выход[сч2] := Удалить();
  48. УВЕЛИЧИТЬ(сч2)
  49. КОН;
  50. зн := Удалить()
  51. АЕСЛИ вход[сч1] = "(" ТО
  52. Добавить(вход[сч1])
  53. АЕСЛИ (вход[сч1] = "+") ИЛИ (вход[сч1] = "-") ИЛИ (вход[сч1] = "/") ИЛИ (вход[сч1] = "*") ТО
  54. ЕСЛИ ДЛИНА(Стек) = 0 ТО Добавить(вход[сч1]) ИНАЧЕ
  55. ЕСЛИ Преимущество(вход[сч1]) > Преимущество(Стек[ДЛИНА(Стек)-1]) ТО
  56. Добавить(вход[сч1])
  57. ИНАЧЕ
  58. ПОКА (ДЛИНА(Стек) # 0) И (Преимущество(вход[сч1]) <= Преимущество(Стек[ДЛИНА(Стек)-1])) ВЫП
  59. выход[сч2] := Удалить(); УВЕЛИЧИТЬ(сч2)
  60. КОН;
  61. Добавить(вход[сч1])
  62. КОН
  63. КОН
  64. АЕСЛИ Знак.Буква(вход[сч1]) ТО
  65. выход[сч2] := вход[сч1];
  66. УВЕЛИЧИТЬ(сч2)
  67. КОН
  68. КОН;
  69. ПОКА ДЛИНА(Стек) # 0 ВЫП
  70. выход[сч2] := Удалить();
  71. УВЕЛИЧИТЬ(сч2)
  72. КОН
  73. КОН Перевести;
  74. КОН ОПН.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement