Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Создание параболы Добавлено: 21.01.11 23:12  

Автор вопроса:  flayve
Помогите пожалуйста исправить ошибку в коде. Программа дожна рисовать параболу с ветвями, направленными вниз!

Dim speed1 As Integer
Dim degree1 As Integer
Dim time1 As Integer
Dim length1 As Currency
Dim height1 As Currency
Dim X1 As Currency
Dim Y1 As Currency
Dim sum1 As Currency
Dim a, b, c As Long
Dim X As Long
Dim Y As Long
Private Sub start_Click()
time = Val(time.Text)
Y1 = Val(speed.Text) * Sin(Val(degree.Text)): height1 = Y1 ^ 2 / 20
If height1 >= 0 Then height1 = height1: hei.Text = height1 Else: height1 = (-1) * height1: hei.Text = height1
X1 = Val(speed.Text) * Cos(Val(degree.Text)): sum1 = X1 * time
If sum1 >= 0 Then sum1 = sum1: sum.Text = sum1 Else: sum1 = (-1) * sum1: sum.Text = sum1
a = ((-1) * height1 / (sum1 / 2) ^ 2)
b = (2 * height1 / (sum1 / 2))
End Sub
Private Sub work_Paint()
Cls
ScaleMode = vbPixels
For X = 0 To sum1
Y = f(X - sum1 / 2)
Y = height1 - Y
Line -(X, Y)
Next X
End Sub
Function f(X As Long) As Long
f = a * X ^ 2 + b * X
End Function
Private Sub work_Resize()
Refresh
End Sub
Private Sub clean_Click()
speed.Text = ""
time.Text = ""
degree.Text = ""
sum.Text = ""
hei.Text = ""
work.Cls
End Sub

Ответить

  Ответы Всего ответов: 9  

Номер ответа: 1
Автор ответа:
 VbStarter



ICQ: 357911808 

Вопросов: 118
Ответов: 1340
 Web-сайт: moscowdevils.ru
 Профиль | | #1
Добавлено: 21.01.11 23:38
какая ошибка? что неправильно делает или чего?

Ответить

Номер ответа: 2
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #2 Добавлено: 22.01.11 03:01
Зачем в рисовании параболы нужны косинусы и синусы?

Ответить

Номер ответа: 3
Автор ответа:
 AgentFire



ICQ: 192496851 

Вопросов: 75
Ответов: 3178
 Профиль | | #3 Добавлено: 22.01.11 11:44
1. x от -N до N
2. y=x^2
3. рисуй

Ответить

Номер ответа: 4
Автор ответа:
 VβÐUηìt



Вопросов: 246
Ответов: 3333
 Web-сайт: смекаешь.рф
 Профиль | | #4
Добавлено: 22.01.11 13:31
Код - ботва. Косинусы, синусы, время o_O
Вот. Дальше сам смотри.
  1.  
  2. Dim a As Double, b As Double
  3. Private Sub start_Click()
  4. Dim x1 As Double, x2 As Double, y1 As Double, y2 As Double
  5. x1 = GetNumber("Ìèíèìàëüíûé X", -2)
  6. y1 = GetNumber("Ìèíèìàëüíûé Y", -2)
  7. x2 = GetNumber("Ìàêñèìàëüíûé X", 2)
  8. y2 = GetNumber("Ìàêñèìàëüíûé Y", 2)
  9. a = GetNumber("Ââåäèòå A", 1)
  10. b = GetNumber("Ââåäèòå B", 0)
  11. If x1 = 0 Or y1 = 0 Or x2 = 0 Or y2 = 0 Then Exit Sub
  12.  
  13. Dim x As Double
  14. Dim y As Double
  15.  
  16. With work
  17. 'Î÷èùàåì
  18. .Cls
  19. '×òîáû íå ñòèðàëîñü
  20. .AutoRedraw = True
  21. 'Öâåò ôîíà è øòðèõîâêè
  22. .BackColor = vbWindowBackground
  23. .ForeColor = vbWindowText
  24.  
  25. 'Âûñòàâëÿåì ìàñøòàá
  26. .ScaleLeft = x1
  27. .ScaleWidth = x2 - x1
  28. .ScaleTop = y1
  29. .ScaleHeight = y2 - y1
  30. 'Êîîðäèíàòíûå ïðÿìûå
  31. .DrawStyle = vbDot 'Ïóíêòèð
  32. work.Line (0, y1)-(0, y2)
  33. work.Line (x1, 0)-(x2, 0)
  34. .DrawStyle = vbSolid 'Îáû÷íàÿ ëèíèÿ
  35. 'Ïåðâàÿ òî÷êà
  36. .CurrentX = x1
  37. .CurrentY = f(x1)
  38. End With
  39. 'Ðèñóåì
  40. For x = x1 To x2 Step work.ScaleWidth / work.Width
  41. work.Line -(x, -f(x)) 'Ìèíóñ - èáî â êîìïüþòåðå íîëü íàâåðõó
  42. Next x
  43.  
  44. End Sub
  45. Function GetNumber(a As String, Optional DefaultValue As Double = 0)
  46. Dim s As String
  47. s = InputBox(a, "Ââåäèòå ÷èñëî", DefaultValue)
  48. If Not IsNumeric(s) Or s = "" Then Exit Function
  49. GetNumber = CDbl(s)
  50. End Function
  51. 'Private Sub work_Paint()
  52. 'Cls
  53. 'ScaleMode = vbPixels
  54. 'For x = 0 To sum1
  55. 'y = f(x - sum1 / 2)
  56. 'y = height1 - y
  57. 'Line -(x, y)
  58. 'Next x
  59. 'End Sub
  60. Function f(x As Double) As Double
  61. f = a * x ^ 2 + b * x
  62. End Function
  63. 'Private Sub work_Resize()
  64. 'Refresh
  65. 'End Sub
  66. 'Private Sub clean_Click()
  67. 'Speed.Text = ""
  68. 'Time.Text = ""
  69. 'Degree.Text = ""
  70. 'Sum.Text = ""
  71. 'hei.Text = ""
  72. 'work.Cls
  73. 'End Sub


Можешь для потестить мою васю скачать - смекаешь.рф

Ответить

Номер ответа: 5
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #5
Добавлено: 22.01.11 14:17
Мы не купимся на дешевый пиар! не бывает "без компромиссов". Компромиссы между объемом, функциональностью, простотой освоения и т.п.

Ответить

Номер ответа: 6
Автор ответа:
 AgentFire



ICQ: 192496851 

Вопросов: 75
Ответов: 3178
 Профиль | | #6 Добавлено: 22.01.11 16:41
ШТО ЭТО, VBD? неотформатированный код??? РУССКИЕ КОММЕНТАРИИ?!

Ответить

Номер ответа: 7
Автор ответа:
 VβÐUηìt



Вопросов: 246
Ответов: 3333
 Web-сайт: смекаешь.рф
 Профиль | | #7
Добавлено: 22.01.11 20:53
Winand пишет:
Мы не купимся на дешевый пиар! не бывает "без компромиссов". Компромиссы между объемом, функциональностью, простотой освоения и т.п.

Хорошо, уговорил, тогда зайди сюда: загорать.рф

AgentFire пишет:
неотформатированный код??? РУССКИЕ КОММЕНТАРИИ?!
 

Это неотформатированные комментарии и русский код. НЕНАДОТНЕТЕ И БЕЗ ОТСТУПОВ!!!!!11одинодинодин

Вот вариант с минимальным ущебром для мозга при прочтении дотнетчиком:
  1.  
  2. Dim a As Double, b As Double
  3. Private Sub start_Click()
  4. Dim x1 As Double, x2 As Double, y1 As Double, y2 As Double
  5. x1 = GetNumber("Минимальное значение X", -2)
  6. y1 = GetNumber("Минимальное значение  Y", -2)
  7. x2 = GetNumber("Максимальное значение X", 2)
  8. y2 = GetNumber("Максимальное значение Y", 2)
  9. a = GetNumber("Значение A", 1)
  10. b = GetNumber("Значение B", 0)
  11. If x1 = 0 Or y1 = 0 Or x2 = 0 Or y2 = 0 Then Exit Sub
  12.  
  13. Dim x As Double
  14. Dim y As Double
  15.  
  16. With work
  17. .Cls
  18. .AutoRedraw = True
  19. .BackColor = vbWindowBackground
  20. .ForeColor = vbWindowText
  21.  
  22.  
  23. .ScaleLeft = x1
  24. .ScaleWidth = x2 - x1
  25. .ScaleTop = y1
  26. .ScaleHeight = y2 - y1
  27.  
  28. .DrawStyle = vbDot
  29. work.Line (0, y1)-(0, y2)
  30. work.Line (x1, 0)-(x2, 0)
  31. .DrawStyle = vbSolid
  32.  
  33. .CurrentX = x1
  34. .CurrentY = f(x1)
  35. End With
  36.  
  37. For x = x1 To x2 Step work.ScaleWidth / work.Width
  38. work.Line -(x, -f(x))
  39. Next x
  40.  
  41. End Sub
  42. Function GetNumber(a As String, Optional DefaultValue As Double = 0)
  43. Dim s As String
  44. s = InputBox(a, "Введите число", DefaultValue)
  45. If Not IsNumeric(s) Or s = "" Then Exit Function
  46. GetNumber = CDbl(s)
  47. End Function
  48.  
  49. Function f(x As Double) As Double
  50. f = a * x ^ 2 + b * x
  51. End Function
  52.  


Ответить

Номер ответа: 8
Автор ответа:
 flayve



Вопросов: 1
Ответов: 1
 Профиль | | #8 Добавлено: 22.01.11 21:43
Для вычисления Y вершины, X1 и из него X вершины соответственно. (Физика 10 класс)

Ответить

Номер ответа: 9
Автор ответа:
 AgentFire



ICQ: 192496851 

Вопросов: 75
Ответов: 3178
 Профиль | | #9 Добавлено: 22.01.11 22:27
кстати, VBD. смекаешь.рф - неплохой калк, видно, что даже не один год ты над ним работал. Но баги не все убрал. особенно с производительностью. напиши в асю покажу где что

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам