ГО
Гуля О.

что не так? Visual basic (см внутри)

как убрать эти ошибки и что не так прописано?
программа для вычисления по формуле, предусмотрев, чтобы не было 0 в знаменателе





код:
Private Sub Command1_Click()
Dim x, y As Single
x = chislo.Text
If x = 2 Then result.Caption = "нельзя делить на 0"
If chislo.Text = Empty Then result.Caption = "введи число"
y = (x - 1) / (x - 2)
result.Caption = y
End Sub

при попытке закрыть if (end if) пишет "end if without block if"

смысл во второй проверке - преподаватель, грозный и беспощадный

ВО
Виктория Окшина

Все дело в том, что после проверки все равно идет попытка выполнить действие.
Соответственно происходит ошибка.
Если пользователь ввел неправильные данные,
надо покидать процедуру не выполняя никаких математических расчетов.

Private Sub Command1_Click()
Dim x As Single

x = Val(chislo.Text)
If x = 2 Then
result.Captiоn = "Нельзя делить на 0"
Exit Sub
End If

' В принципе, вся эта конструкция теряет смысл,
' так как ранее использована функция Val()
' Даже если юзер введет "фывапро" или ничего не введет, то
' функция вернет "0".
' Это все можно заремарить или просто удалить
If chislo.Text = Empty Then
result.Captiоn = "Введи число"
Exit Sub
End If

result.Captiоn = (x - 1) / (x - 2)

End Sub

Немного "пригладим код" и получим

Private Sub Command1_Click()
Dim x As Single

x = Val(chislo.Text)
If x = 2 Then
result.Captiоn = "Нельзя делить на 0"
Else
result.Captiоn = (x - 1) / (x - 2)
End If

End Sub

P.S. Скриншотики, это очень хорошо, но они такие мелкие, что без микроскопа не рассмотреть...

Azamjon
Azamjon

Вероятно, вы пытаетесь присвоить числовой переменной текстовое значение.

Людмила
Людмила

Деление на 0. О да!

Нуфер Евгений
Нуфер Евгений

надо сделать так, чтобы с клавиатуры нельзя было нажать 2, это реально. иначе программа делит на 0

ЛГ
Лёха Гайван

плохо виден код. вроде иф не закрыт, поэтому ругается.

Руслан
Руслан

по скольку видно иф не закрыт а так лучше написать было код и разобрались бы быстрее

ЕД
Елена Добрынина

Подряд идут два IF вот редактор и "запутался". Лучше использовать полную конструкцию, даже если она в одну строку получится.
Ну а вообще, смотрим логику: если ввели 2, то что имеем? Выводим в result "нельзя делить на 0" и благополучно дальше считаем.. . Надо сделать так:
If x = 2 Then
result.Captiоn = "нельзя делить на 0"
exit sub
end if
Кстати, а какой смысл во второй проверке? Ну не ввел человек число. Может, он решил, что х=0. Математически это возможно...

Похожие вопросы
Что такое Visual Basic???
Презентация Basic and Visual Basic
visual basic помогите
Visual Basic. Помогите
Помогите с Visual Basic
вопрос по Visual Basic
Помощь в Visual Basic...
Microsoft Visual Basic 2010 считаеться visual basic .net ? ?
visual basic
С Visual Basic.Net На Visual Basic 6.0