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

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

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.09.2010, 22:45   #1
Aleks2215
Пользователь
 
Регистрация: 19.09.2010
Сообщений: 30
По умолчанию Проблема с Debugger-ом в VBA

Написал прогу в VBA, стал проверять дебагером и обнаружил что он пропускает строки программы, перескакивая с 13 сразу на 21 и программа, следовательно не работает как надо. Подскажите в чем дело?
Вот код:
Option Explicit
Sub lab()
Dim a As Single, b As Single, eps As Single, n As Integer, f_a As Single
Dim x As Single, f_x As Single
a = 0
b = 2
eps = 0.001
n = 0
f_a = 3 * a ^ 3 + 8 * a ^ 2 - a^0.5 - 10
metka:
x = (a + b) / 2
f_x = 3 * x ^ 3 + 8 * x ^ 2 - x^0.5 - 10
If Abs(f_x) > eps Then
n = n + 1
If f_a * f_x > 0 Then
a = x
Else
b = x
End If
GoTo metka
End If
Cells(10, 6) = x
Cells(11, 6) = n
End Sub

Последний раз редактировалось Aleks2215; 19.09.2010 в 23:12.
Aleks2215 вне форума Ответить с цитированием
Старый 19.09.2010, 22:52   #2
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Я понял, что условие
If Abs(f_x) > eps Then
не выполняется, поэтому перескакивает.
Т.е. Abs(f_x) <= eps
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 20.09.2010, 00:26   #3
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

У вас проблем нет.Значения функции неудачно выбрали.
Замените на
f_a = 3 * a ^ 3 + 8 * a ^ 2 - a^0.5 - 4
И увидите правильность работы вашего кодаСчитает все правильно.
Для лабы и этот пример подойдет.Меняя данные.вы увидите изменения
Применение
Код:
Private Sub CommandButton1_Click()
 korni 0, 2, 0.001
End Sub
Код:
Sub korni(a As Single, B As Single, Eps As Single)
Dim n As Integer, f_a As Single
Dim x As Single, f_x As Single
n = 0
f_a = FUNC(0)
metka:
x = (a + B) / 2
f_x = FUNC(x)
If Abs(f_x) > Eps Then
n = n + 1
If f_a * f_x > 0 Then
a = x
Else
B = x
End If
GoTo metka
End If
Cells(10, 6) = x
Cells(11, 6) = n
End Function


Function FUNC(a As Single) As Single
 FUNC = 3 * a ^ 3 + 8 * a ^ 2 - Sqr(a) - 10
End Function
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как отключить Just-In-Time Debugger?? Munky Общие вопросы .NET 9 06.09.2011 18:18
Ошибка - Debugger exception notification Football_lady БД в Delphi 1 15.01.2010 19:07
debugger у JS? Аlex JavaScript, Ajax 0 28.12.2008 22:23