Привет всем. Пока только учу VBA. Можете помочь с одним заданием? Никак не могу понять, как это сделать. Пожалуйста.
Нужно найти сумму с заданной точностью, где An = n^(корень n) - x / n!
E=10^(-7)
[вложение удалено администратором]
При каких значениях "x" надо тестировать, я не знаю. Это вам надо смотреть математику.
Сумма считается до тех пор, пока очередное слагаемое (абсолютное значение, т.е. без учёта знака) не станет меньше заданной точности.
Последнее слагаемое, которое меньше заданной точности, не приплюсовывается.
Макрос
Sub макрос()
' Создание в оперативной памяти компьютера поименованной области - переменной "sum".
' Переменная нужна, чтобы в неё что-нибудь записывать. Переменную можно сравнить
' с файлом, но файл находится на жёстком диске компьютера, а переменная в оперативной памяти.
' Double означает, что в переменной могут быть только числа (текст не может быть).
' Причём числа могут быть как целые, так и дробные.
Dim sum As Double, slagaemoe As Double, x As Double
' Long означает, что в переменной могут быть только числа. Причём числа могут быть только целые.
' String означает, что данные, которые будут в переменной, будут считаться текстом.
Dim n As Long, InputText As String, factorial As Double
' Создание в оперативной памяти компьютера константы "e". Константа это такая же переменная,
' только в неё можно записать данные один раз.
Const e As Double = 10 ^ (-7)
'1. Юзер записывает "x" в переменную "InputText".
InputText = InputBox("Введите ""x"":")
' Если юзер щёлкнул "Cancel", то выход из процедуры "макрос" и тем самым завершение работы макроса.
' If ... Then ... End If используется для выбора действия.
If InputText = "" Then
Exit Sub
End If
'2. Копирование данных из переменной "InputText" в переменную "x", чтобы
' число было в виде числа, а не в виде текста, чтобы было логично.
x = InputText
'3. Сразу записываем в переменную "factorial" число 1. По умолчанию там ноль.
' А если будет ноль, то далее при расчётах факториала всегда будет ноль,
' т.к. при умножении на ноль будет ноль.
factorial = 1
'4.
' Do .. Loop - это цикл. Цикл используется, чтобы запускать одну и ту же команду несколько раз.
Do
'1) Запись в переменную "n" числа. В неё записывается число из переменной "n" плюс 1.
n = n + 1
'2) Расчёт факториала.
factorial = factorial * n
'3) Расчёт слагаемого для текущего "n".
slagaemoe = n ^ Sqr(n) - x / factorial
'4) Если абсолютное значение слагаемого меньше заданной точности.
If Abs(slagaemoe) < e Then
' Сумма рассчитана и выход из цикла с Do.
Exit Do
'5) Если абсолютное значение слагаемого не меньше заданной точности.
Else
' Добавление слагаемого к имеющейся сумме.
sum = sum + slagaemoe
End If
Loop
'5. Сообщение.
MsgBox "Сумма равна: " & sum, vbInformation
End Sub
Если х=0,1, то запись без первого и второго пункта?
Если x заранее задан, то пункт 1 удалите, а в пункте 2 в переменную x просто запишите нужное число.
И удалите переменную "InputText ", чтобы не было лишнего и не усложняло восприятие макроса.
Огромное вам спасибо!
Ну или вообще не используйте переменную "x", а подставьте число вместо "x" в пункте 4.3.
Да, если сразу нужно записать число в переменную "x", то это уже оформите как константу. В макросе есть уже одна константа, поэтому можете сделать по аналогии.