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

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

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

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

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

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

Написал прогу:
Option Explicit
Sub Lab2()
Dim c As Single, d As Single, dx As Single, x As Single, y As Single
Dim k As Integer
c = -1
d = 1
dx = 0.1
x = -1
k = 0
metka:
cells(10 + k, 10) = x
If x <= 0 Then
y = 1 / Sin(x) + 2
End If
If (x > 0) And (x < 2) Then
y = Log(x) / Log(10) + Exp(x)
End If
If x > 2 Then
y = 2 * x ^ 2
End If
If k = 10 Then
x = 0
End If
x = x + dx
k = k + 1
cells(9, 9) = k
cells(7 + k, 4) = y
If x = d Then
GoTo metka_1
End If
GoTo metka
metka_1:
End Sub

Однако в ней почему то не срабатывает команда выхода If x = d Then
GoTo metka_1
d=1, x тоже принимает значение 1, но условие не срабатывает и счетчик идет дальше. Подскажите кто нибудь, что не так?
Aleks2215 вне форума Ответить с цитированием
Старый 27.09.2010, 21:47   #2
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Похоже, что не совсем они равны:
Код:
Debug.Print d - x
If x = d Then
даёт
0,3
0,1999999
0,0999999
-1,192093E-07
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 27.09.2010, 21:47   #3
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Вы же уравнения решаете,точность задавать надо

Код:
If Abs(d - x) < 0.001 Then
GoTo metka_1
End If
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 27.09.2010, 22:37   #4
Aleks2215
Пользователь
 
Регистрация: 19.09.2010
Сообщений: 30
По умолчанию

Цитата:
Сообщение от doober Посмотреть сообщение
Вы же уравнения решаете,точность задавать надо

Код:
If Abs(d - x) < 0.001 Then
GoTo metka_1
End If
Мне нужно чтобы в решении x принимал значения из ВСЕГО промежутка [-1;1], а если ставить такое условие то будет только [-1;0,9] Можно конечно задать значение d=1,1, но хотелось бы решить использую исходные данные.

Последний раз редактировалось Aleks2215; 27.09.2010 в 22:45.
Aleks2215 вне форума Ответить с цитированием
Старый 28.09.2010, 00:05   #5
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Код:
If x <= 0 Then
y = 1 / Sin(x) + 2
End If
А деление на 0 вас не смущает.Поменяйте оббъявление
Код:
dx As Currency
И вы этот ноль сразу поймаете
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с программой. elDiablo Паскаль, Turbo Pascal, PascalABC.NET 2 17.08.2010 21:59
Проблема с программой DjSeNseI Win Api 2 12.07.2010 00:03
Возможно ли написать в VB/VBA(Ex) софтину, которая бы управляла программой (или usb устройством) RussellMur Microsoft Office Excel 14 09.03.2009 03:25
Проблема с программой eks-s Общие вопросы Delphi 9 06.02.2008 09:47
Проблема с программой Dues Помощь студентам 1 19.11.2007 01:46