Помощь - Поиск - Пользователи - Календарь
Полная версия: Помогите найти ошибку в коде > Информатика / Программирование
Образовательный студенческий форум > Другие дисциплины > Информатика / Программирование
Bigben
Всем привет.
Помогите, пожалуйста, найти ошибку в коде.
Данные на картинке.

Код:
Private Sub Command1_Click()
n = InputBox("Введите значение N", "Ввод исходных данных")
x = 0.254 / Cos(n)
c = Sin(2.6 * n)
If Tan(x) - Exp(-c) > 0.564 Then z = (Abs(Sin(x) ^ 3 - 12 * Cos( c))) ^ (1 / 5) Else z = Log(Abs((c - x) ^ Abs(x - c) - Log(x) / Log(10)))
If Tan(x) - Exp(-c) > 0.564 Then
l = MsgBox("Условие выполняетсяя!!!", vbOKOnly, "Выполняется ли условие???")
Else
l = MsgBox("Условие выполняется!!!", vbOKOnly, "Выполняется ли условие???")
End If
z = MsgBox("Z=" + Str(z), vbYes, "Результаты расчета")
End
End Sub

Private Sub Command2_Click()
End
End Sub

После попытки выполнить - выдаёт ошибку Run-time error '5': Invalid procedure call or argument. После debug выделяет сегмент, выделенный выше синим.. Чувствую, что что-то с логарифмом намудрил. Помогите плиз.
Это на Visual Basic 6

Изображение
tig81
Цитата(Bigben @ 22.9.2010, 20:01) *

Данные в прикреплённой картинке.

файла нет
Bigben
Сорри, файл был больше 500 кб, уже вставил.
Vahappaday
А зачем двоеточие после ELSE?
Bigben
Это как бы перенос на другую строку.. До этого просто я переносил.. Забыл убрать.
Сейчас убрал - ничего не поменялось, как была ошибка, так и есть((
Vahappaday
прогнал пооперационно, разбив на строчки....
ругается на возведение в степень отрицательного числа
предлагаю определиться с правилами возведения в степень отрицательных чисел и реализовать)
Bigben
Хм, а где ж там возведение в степень отр. числа... Вроде всё правильно..
А с логарифмами всё норм ? Я не уверен, что вместо ln можно писать log..
Vahappaday
C Log всё ок...
Выдаёт ошибку операция
Код
(c - x) ^ Abs(x - c)
, когда основание степени (с-x) отрицательное.
Так, например, происходит, когда n=11.
Bigben
Хм... В лабораторке написано, что значение n=номеру варианта. У меня 18-ый, пишу 18 - и вот такая байда..
Vahappaday
В общем, я бы сделал так
Код


Private Sub Command1_Click()
n = InputBox("A", "B")
x = 0.254 / Cos(n)
c = Sin(2.6 * n)
If Tan(x) - Exp(-c) > 0.564 Then
Z = (Abs(Sin(x) ^ 3 - 12 * Cos(c))) ^ (1 / 5)
Else
If ((Int(x - c) = (x - c)) And (Abs(x - c) Mod 2 = 0)) Then
Z = Log(Abs(Abs(c - x) ^ Abs(x - c) - Log(x) / Log(10)))
Else
Z = Log(Abs(Sgn(c - x) * Abs(c - x) ^ Abs(x - c) - Log(x) / Log(10)))
End If
End If
If Tan(x) - Exp(-c) > 0.564 Then
l = MsgBox("Условие выполняется!", vbOKOnly, "Выполняется ли условие?")
Else
l = MsgBox("Условие не выполняется!", vbOKOnly, "Выполняется ли условие?")
End If
Z = MsgBox("Z=" + Str(Z), vbYes, "Результаты расчета")
End
End Sub

Отдельно рассмотрены варианты с чётной степенью и со всеми остальными.
julia_lisha
ну всем помог)))
Vahappaday
хм... по-моему, автору поста решение не очень понравилось)) как-то он его проигнорировал)) так что, возможно, не помог))
но иного не знаю...
tig81
Спасибо, Vahappaday, за помощь.
Раз автору сложно это сказать.
Vahappaday
ды нет!! я не про то....
забыл, так, забыл, значит не надо))
мне кажется, что решение моё не по нраву, не подходит для данного случая...
tig81
Цитата(Vahappaday @ 27.9.2010, 16:39) *

забыл, так, забыл, значит не надо))

Нет, не забыл, 24 на форуме был. Посмотрите в профиле дату последнего посещения.
Vahappaday
ладно, ерунда это всё))
tig81
smile.gif
julia_lisha
ой да хватит! я всегда рада твоей помощиwink.gif
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.
Русская версия Invision Power Board © 2001-2024 Invision Power Services, Inc.