Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.11.2008, 14:46   #1
Slicker
Пользователь
 
Регистрация: 25.08.2008
Сообщений: 51
По умолчанию VBA Excel

надо написать функцию, которая возвращает результат в процедуру. Посчитать Сумму ((-1)^i)/i! при от i=1 до n (формула на картинке более понятна). Основную сложность вызывает факториал в формуле...

вот пока что сделал только это:

Код:
Sub Pr8()
Dim n As Integer
n = InputBox("Введите число")
s$ = F8(n)
MsgBox ("Сумма = " & s$)
End Sub

Function F8(n As Integer) As Integer
For i = 1 To n
F8 = 
Next i
End Function
вот формула:
Изображения
Тип файла: jpg 123321.jpg (2.4 Кб, 137 просмотров)
Slicker вне форума Ответить с цитированием
Старый 04.11.2008, 15:07   #2
Slicker
Пользователь
 
Регистрация: 25.08.2008
Сообщений: 51
По умолчанию

желательно до завтра дописать бы программку...
Slicker вне форума Ответить с цитированием
Старый 04.11.2008, 16:35   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Попробуй так, если я правильно поняв:
Код:
'Факториалъ
Function Fa(n As Integer) As Integer
Fa = 1
For i = 2 To n
Fa = Fa * i
Next i
End Function

' Функа
Function F8(n As Integer) As Double
Dim i As Integer
For i = 1 To n
F8 = F8 + ((-1) ^ i / Fa(i))
Next i
End Function
Private Sub UserForm_Click()
 MsgBox CStr(F8(3))
End Sub
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 04.11.2008, 16:43   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Вы тему бы лучше в Excel поместили - там такие монстры, враз Вашу задачу раскусят!! ;-)

ну да ладно.
Прежде всего, тип Integer меняйте на тип Long
дальше, факториал считается не просто, а очень просто
(вот, в лоб, без рекурсии):
Код:
Function Factorial(n As integer) As Long
Dim Res As Long, i as Integer
if n = 0 then
  Factorial = 1
else
  Res := 1
  For i = 2 To n
    Res = Res * i
  Next i
  Factorial  = Res
end if
End Function
НО. ВНИМАНИЕ!
имхо тут надо уловить одну закономерность,
каждый следующий член последовательности I-й - это предыдущий умноженный на минус 1 и делённый на I
Код:
dim K as Double, S as Double, i%, n%
K = -1
S = K
for i=2 to n
  K = (K * (-1))/i
  S = S + K
next i
MsgBox "Summa = "+CStr(S)
Serge_Bliznykov вне форума Ответить с цитированием
Старый 04.11.2008, 17:14   #5
Slicker
Пользователь
 
Регистрация: 25.08.2008
Сообщений: 51
По умолчанию

Спасибо!!!
Сделал чтобы число можно было вводить в ячейку А1.
Вдруг кому нибудь нужна будет подобная программка, вот полностью рабочий код:

Код:
Sub Pr8()
Dim n, i As Double
MsgBox CStr(F8(Cells(1, 1)))
End Sub

Function Fa(n As Integer) As Integer
Fa = 1
For i = 2 To n
Fa = Fa * i
Next i
End Function

' Функа
Function F8(n As Integer) As Double
Dim i As Integer
For i = 1 To n
F8 = F8 + ((-1) ^ i / Fa(i))
Next i
End Function
Slicker вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
VBA Excel задача Slicker Microsoft Office Excel 2 04.11.2008 14:06
помогите с vba excel Serzov Microsoft Office Excel 21 14.07.2008 22:10
VBA Excel 2003 tat-besidovska Microsoft Office Excel 17 07.06.2008 15:48
VBA i Excel corsarlt Microsoft Office Excel 3 03.04.2008 06:13
макрос VBA Excel Bor Microsoft Office Excel 5 25.01.2008 12:20