Option ExplicitConst n = 50 'Максимальная емкость стекаDim LIFO(1 To n) As VariantDim ptr As Integer 'указатель на вершину стека, моделируемого LIFODim Overflow As BooleanDim EmptyLIFO As BooleanSub Push(Elem As Variant) 'добавляет элемент на вершину стека If ptr < n Then ptr = ptr + 1 LIFO(ptr) = Elem Overflow = False EmptyLIFO = False Else Overflow = True End IfEnd SubSub Pop(Elem As Variant) 'Возвращает элемент с вершины стека и удаляет его из стека If ptr > 0 Then Elem = LIFO(ptr) ptr = ptr - 1 End If EmptyLIFO = (ptr = 0)End SubSub main() ' Пример работы со стеком - перестановка букв в словах строки. ' Не меняя порядка слов в строке, переставить в каждом слове буквы в обратном порядке. ' Слова разделяются ровно одним пробелом. Dim s As String, s1 As String, i As Integer, e As String s = Sheets("Лист1").Cells(1, 1).Value If Len(s) = 0 Then MsgBox "Нет входной строки" Exit Sub End If EmptyLIFO = True Overflow = False s1 = "" For i = 1 To Len(s) e = Mid(s, i, 1) 'Очередной символ If e <> " " Then Push e Else s1 = s1 + " " Do While Not EmptyLIFO Pop e s1 = s1 + e Loop End If Next i s1 = s1 + " " Do While Not EmptyLIFO Pop e s1 = s1 + e Loop s1 = Trim(s1) Sheets("Лист1").Cells(2, 1).Value = s1End Sub