Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > VB6 > Ошибка в программе, нахождение точки


Автор: SIMarOK 26.10.2004, 19:32
Проблема в следующем:
Дана окружность единичного радиуса и парабола y= 7x^2 - 2
Принадлежит ли точка D выделенной части плоскости ( исключая границу ).
http://simarok.narod.ru/graphik.bmp

Вот код программы:

Код
Private X As Single
Dim Y As Single
Dim Y1 As Single
Sub Command1_Click()
X = Text1.Text
Y = Text2.Text
Y1 = 7 * X ^ 2 - 2//условие за-
r = 1//да-
Y2 = r ^ 2//чи
If Y < Y1 And Y > Y2 Then//...
Text1.Visible = False
Text2.Visible = False
Command1.Visible = False
Command2.Visible = True
Label5.Visible = True
Label5.Caption = "Точка D(" & Str(X) & "," & Str(Y) & ") расположена в выделенной части плоскости."
Else
Text1.Visible = False
Text2.Visible = False
Command1.Visible = False
Command2.Visible = True
Label5.Visible = True
Label5.Caption = "Точка D(" & Str(X) & "," & Str(Y) & ") не лежит в выделенной части плоскости."
End If
End Sub

Private Sub Command2_Click()
Unload Form1
End Sub


Как еще можно представить условия задачи в программе...вроде все правельно работает, но показав преподу он сказал что это чуш :( .

Помогите пожалуйста кто знает, спасибо:)

Автор: boevik 27.10.2004, 00:11
Не знаю почему назвал чушью, но кое что желательно перепесать.
Кусок кода:
Код
Text1.Visible = False
Text2.Visible = False
Command1.Visible = False
Command2.Visible = True
Label5.Visible = True
Label5.Caption = "Точка D(" & Str(X) & "," & Str(Y)

желатально вынести перед if, так как в обеих частях он одинаков.

Код
Private X As Single
Dim Y As Single
Dim Y1 As Single
Sub Command1_Click()
X = Text1.Text
Y = Text2.Text
Y1 = 7 * X ^ 2 - 2 'условие за-
r = 1  'да-
Y2 = r ^ 2 'чи
Text1.Visible = False
Text2.Visible = False
Command1.Visible = False
Command2.Visible = True
Label5.Visible = True
Label5.Caption = "Точка D(" & Str(X) & "," & Str(Y)
If Y < Y1 And Y > Y2 Then '...
   Label5.Caption = Label5.Caption  & ") расположена в выделенной части плоскости."
Else
   Label5.Caption = Label5.Caption  & ") не лежит в выделенной части плоскости."
End If
End Sub

Private Sub Command2_Click()
Unload Form1
End Sub



А насчет, того верен ли алгоротм решения, я не смотрел.
Добавлено @ 00:14
Кажется, я догадываюсь в чем чушь.
Посмотри внимательно на код:
Код
r = 1 'да-
Y2 = r ^ 2 'чи

и
Код
If Y < Y1 And Y > Y2 Then

Автор: SIMarOK 27.10.2004, 07:43
Ну окружность, а именно
Код
r = 1 'да-
Y2 = r ^ 2 'чи
можновообще выкинуть, так как значения меньше единицы приниматься не будут...Вот я поправил условие:
Код
If Y > Y1 Then
- так я думаю алгоритм решения должен быть верен:)

Автор: boevik 27.10.2004, 08:07
SIMarOK, странно, что ты только Y проверяешь, а что с X, не надо проверять?

Автор: boevik 27.10.2004, 08:20
С утра, мне повидемому, лучше думается.

X проверять не надо и похоже твоё условие достаточно для проверки принадлежности точки выделенной части плоскости.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)