Иллюстрированный самоучитель по Mathematica 5

Факторизация дробей

Loop While strTemp = ","
And (Response = vbYes)
' Выполняем цикл, пока не обработаем все множители
' или не обнаружим ошибку
If strTemp = "}" Then
' Список должен заканчиваться
' закрывающейся скобкой
(Selection.Delete Unit: = wdCharacter, Count: = 1
' Удаляем скобку
Else
Response = MsgBox("***0шибка: в конце списка нет }... " _
+ Msg, Style, Title)
If Response = vbYes Then
' Пользователь выбрал Yes (Да)
MyString = "Yes"
' Запомним, что выбрал пользователь
Else ' Пользователь выбрал No (Нет)
MyString = "No".
' Запомним, что выбрал пользователь
End If End If End If
Options.PasteSmartCutPaste" = OptPasteSmartCutPaste
End Sub
Function Multiplier()
' Обработка множителя (и его степени)
' Макрос записан 26.10.2003 Яков Шмидский
Dim strTemp As String
Dim Msg, Style, Title, Help, Ctxt, Response, MyString
Msg = "Хотите продолжить?"
' Вопрос к пользователю
Style = vbYesNo + vbCritical + vbDefaultButton2
' Кнопки
Title = "Очередной множитель: степень простого"
' Заголовок окна
Response = vbYes ' Пока ошибки не обнаружены
strTemp = Selection.Text
' Выбираем очередной символ
Selection.MoveRight Unit: = wdCharacter,
Count: = 1, Extend: = wdExtend
If strTemp = "{" Then
' Если отрывающая скобка - начало множителя
Selection.Delete Unit: = wdCharacter, Count: = 1
' Скобку удаляем
Selection.Extend Character: = ","
' Расширили выделение до,
Selection.MoveLeft Unit: = wdCharacter, Count: = 1,
Extend: = wdExtend
' Отменили выделение, BaseRepresent
Selection.MoveRight Unit: = wdCharacter, Count: = 1
' Основание Selection.MoveRight Unit: = wdCharacter,
Count: = l, Extend: = wdExtend strTemp = Selection.Text
' Основание отделяется, от показателя
If strTemp = "," Then
' Разделитель нашли PowExp
' Обрабатываем показатель
Selection.MoveRight Unit: = wdCharacter, Count: = 1, Extend: = wdExtend
strTemp = Selection.Text
' Этот символ завершает множитель
If strTemp = "}" Then
' Это должна быть закрывающая скобка
Selection.Delete Unit: = wdCharacter, Count: = 1
' - Удалить ее Else
' Но ведь в коде же должна быть закрывающая скобка
Response = MsgBox("***0шибка в сомножителе: нет }... " + Msg, Style, Title) If Response = vbYes Then
' Пользователь выбрал Yes (Да)
MyString = "Yes"
' Запомним, что выбрал пользователь
Else' Пользователь выбрал No (Нет)
MyString = "No"
' Запомним, что выбрал пользователь
End If End If Else ' Иначе - а где же запятая?
Response = MsgBox("***0шибка в сомножителе: нет,... " + Msg, Style, Title) If Response = vbYes Then
' Пользователь выбрал Yes (Да)
MyString = "Yes"
' Запомним, что выбрал пользователь
Else ' Пользователь выбрал No (Нет)
MyString = "No"
' Запомним, что выбрал пользователь
End If
End If
End If
Multiplier = Response End Function
Sub PowExp()
' Обработка показателя
Dim strTemp As String
Selection..Delete Unit: = wdCharacter, Count: = 1
' Удаляем символ
Selection.Extend Character: = "}"
' Расширили выделение до }
Selection.MoveLeft Unit: = wdCharacter, Count: = 1, Extend: = wdExtend
' Отменили выделение }
strTemp = Selection.Text
' Это и есть показатель
If strTemp = "1" Then
' Если показатель равен 1
Selection.Delete Unit: = wdCharacter, Count: = 1
' Удаляем его Else
' В противном случае форматируем его как надстрочный
With Selection.Font
.Superscript = True 'Надстрочный
End With Selection.MoveRight Unit: = wdCharacter, Count: = 1
Selection.Font.Reset 'Восстановить стиль
End If End Sub
Sub BaseRepresent() Dim strTemp As String
strTemp = Selection.Text ' Основание
If Not MultiplierQ(strTemp) Then
' Selection.MoveLeft Unit: = wdCharacter, Count: = 1
Selection.InsertBefore "("
' Перед основанием вставим символ {
Selection.InsertAfter ")"
' А после него вставим символ)
End If
End Sub
Function MultiplierQ(strTemp) ret = True
If Left(strTemp, 1) = "-"
Then ret = False MultiplierQ = ret
End Function
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.