• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

Работа С Отрицательными Значениями.

  • Автор темы heartbeat
  • Дата начала
H

heartbeat

Здравствуйте уважаемые формутчане, прошу у вас помощи в решении непонятной для меня ситуации.

Пишу работу на Visual Basic и не могу понять почему, построенная конструкция на if при работе как с положительными так и с отрицательными числами даёт правельный результат, а конструкция Case только при положительных.

При указываемом значении x = -2, ответ как описано в методичке должен быть -0,84147? а получается -5,6 хотя по сути ничего не изменилось, в конструкции if все ответы получаются верные.

Код:
Dim x, K As Double
x = TextBox1.Text

If 1 <= x And x < 9 Then
K = 13 * x + 5 * (x ^ 2) + 0.4
End If
If x < 1 Or 9 <= x Then
K = Math.Sin(x / 2)
End If

Label5.Text = K

Select Case x
Case Is <= 1, Is < 9
MsgBox(x) 'при проверке, значение -2

K = 13 * x + 5 * (x ^ 2) + 0.4
MsgBox(K)
Case Is < 1, Is >= 9
K = Math.Sin(x / 2)
MsgBox(K)
End Select
 
A

alex77755

дело не в отрицательных знаках а в знаках сравнения
Код:
 If 1 <= x And x < 9 Then
и
Case Is <= 1, Is < 9
В первом случае х от 1 до 9.
А во втором? Меньше 1
Код:
Case 1 To 9
Код:
Case Is >= 1, Is < 9
 
H

heartbeat

по условию задачи для формулы K = 13 * x + 5 * (x ^ 2) + 0.4 значение х равно 1 <= x < 9, для выражения K = Math.Sin(x / 2) - x < 1 или х >= 9

При таком построении Case Is >= 1, Is < 9 - почему-то число 31 попадает под это правило, хотя не должно так как явно написанно Х меньше или равен 1 и Х не больше 9, а так же значение -2 попадает, и ответ такой же -5,6
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!