Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
2 / 2 / 1
Регистрация: 19.05.2012
Сообщений: 57

объясните код

29.05.2013, 21:21. Показов 1274. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
короче закомментируйте плз код мне ,чтобы было понятно , что делает каждая строка ( если лень каждую, то хотя бы основные )
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
Option Explicit
Dim X As Single
Dim Y As Single
Dim kol As Integer
Dim I As Integer
Dim T As Single
Const N As Long = 10 'количество шариков
 
Dim Time As Integer
Dim tikcir(N) As Boolean 'флажки попадания в мишень
Dim CoStop As Long, CoCurr As Long 'Для подсчёта количества частица и контроля над таймером
Dim TiStop As Long, TiCurr As Long 'Для подсчёта времени и контроля над таймером
Dim TiCo As Boolean
 
Const D As Double = 15 ' размер шариков; переменная для начальных координат стартового шарика
Dim VX(N) As Double, VY(N) As Double, V(N) As Double
Dim a_X(N) As Double, a_Y(N) As Double 'координаты шариков
Dim TN As Double, tik As Long
Dim II As Integer, JJ As Integer
Dim vXij As Double, vYij As Double
 
Private Sub Command3_Click(Index As Integer) 'Аргумент Index имеет тип Integer и указывает индекс того элемента управления, к которому применяется данная процедура
 
    For I = 0 To N 'цикл,удаляющий шарики
        Shape1(I).Visible = False 'шарики становятся невидимыми
    Next I
Label4.Caption = "Время: 0 Частиц: 0" 'сброс значений времени и количества частиц
              
End Sub
 
Private Sub Form_Load()
Randomize  '
Show
Label4.Caption = "Время: 0 Частиц: 0"
 
Picture1.Scale (0, 0)-(400, 400) 'метод,который задаёт  систему координат
 
Dim I As Integer, J As Integer
Timer1.Enabled = False 'остановка таймера
Me.ScaleWidth = 400 'Область , на которой может происходить движение шариков
Me.ScaleHeight = 400 'Область , на которой может происходить движение шариков
Shape1(0).Height = D 'начальное положение стартового шарика на оси Y
Shape1(0).Width = D ' начальное положение стартового шарика на оси X
 
 
Shape1(0).Top = a_X(1)  'X
 
Shape1(0).Left = a_Y(1) 'Y
VX(0) = 110
VY(0) = 40
For I = 1 To N 'цикл ,выводящий массив объектов в хаотичном положении
  Load Shape1(I) 'загрузка экзампляра shape1
  With Shape1(I) 'блок для установки свойств объекта shape1(I)
   .Visible = True
   .Shape = 3
   .Width = D
   .Height = D
   a_X(I) = Int(Rnd * 300 + D) 'a_X(I - 1) + 50
   .Top = a_X(I)
   a_Y(I) = Int(Rnd * 300 + D)
    .Left = a_Y(I)
  End With
Next I
 
For I = 0 To N
'проверка начальной позиции, с условие попадания в мишень при расстановке частиц
    Dim cX As Long 'позиция центра частицы на экране
    Dim cY As Long 'позиция центра частицы на экране
    
    cX = Shape1(I).Width / 2 + Shape1(I).Left
    cY = Shape1(I).Height / 2 + Shape1(I).Top
    
    Dim mX As Long 'позиция центра мишени на экране
    Dim mY As Long 'позиция центра мишени на экране
    Dim mR As Long 'радиус мишени
    
    mX = Shape2.Width / 2 + Shape2.Left
    mY = Shape2.Height / 2 + Shape2.Top
    mR = Shape2.Width / 2
    
    If ((cX - mX) * (cX - mX) + (cY - mY) * (cY - mY) <= mR * mR) Then 'стандартное условие попадения в центр окружности (x-a)^2+(y-b)^2=R^2, где a и b - центр окружности
        tikcir(I) = True
    Else
        tikcir(I) = False
    End If
Next I
 
kol = Val(Text1.Text)
Time = Val(Text2.Text)
Text1.SetFocus
 
 
End Sub
 
Sub Timer1_Timer()
Dim I As Long, J As Long
Dim K As Double, dX As Double, dY As Double
Dim VIR As Double, VJR As Double
Dim cX As Long 'позиция центра частицы на экране
Dim cY As Long 'позиция центра частицы на экране
Dim mX As Long 'позиция центра мишени на экране
Dim mY As Long 'позиция центра мишени на экране
Dim mR As Long 'радиус мишени
Dim Work As Boolean
Dim Ghost As Integer 'так как отлов ведётся на выходе из мишени, то в эту переменную будет подсчитыватся сумма в частиц в кругу на данный момент
 
Work = False
'проверяем на условия окончания
 
 
 
If (CoCurr + Ghost < CoStop) And (TiCurr < TiStop) Then
    Work = True
Else
    Work = False
End If
 
 
 
If Work Then
      
  tik = tik + 1
  If tik > TN Then
    K = TN + 1 - tik
    For I = 0 To N
              'тут распишем условие попадания
                cX = Shape1(I).Width / 2 + Shape1(I).Left
                cY = Shape1(I).Height / 2 + Shape1(I).Top
                mX = Shape2.Width / 2 + Shape2.Left
                mY = Shape2.Height / 2 + Shape2.Top
                mR = Shape2.Width / 2
                If ((cX - mX) * (cX - mX) + (cY - mY) * (cY - mY) <= mR * mR) Then 'стандартное условие попадения в центр окружности (x-a)^2+(y-b)^2=R^2, где a и b - центр окружности
                ' попадает на данном такте
                    tikcir(I) = True
                Else
                    If tikcir(I) Then ' был на мишени в прошлом такте
                        CoCurr = CoCurr + 1
                    End If
                    
                    tikcir(I) = False
                End If
              Label4.Caption = "Время: " + Str(TiStop - TiCurr) + " Частиц: " + Str(CoCurr + Ghost)
              a_Y(I) = a_Y(I) + VY(I) * K: Shape1(I).Left = a_Y(I)
              a_X(I) = a_X(I) + VX(I) * K: Shape1(I).Top = a_X(I)
            Next I
            Select Case JJ
              Case -1: VX(II) = -VX(II)
              Case -2: VY(II) = -VY(II)
              Case Else
                dX = (a_X(II) - a_X(JJ)) / D
                dY = (a_Y(II) - a_Y(JJ)) / D
                vXij = VX(JJ) - VX(II)
                vYij = VY(JJ) - VY(II)
                VIR = (dY * vYij + dX * vXij)
                VJR = (dX * vYij - vXij * dY)
                VX(JJ) = VX(II) - VJR * dY
                VY(JJ) = VY(II) + VJR * dX
                VX(II) = VX(II) + VIR * dX
                VY(II) = VY(II) + VIR * dY
            End Select
            near_Bac
          Else
            For I = 0 To N
              'тут распишем условие попадания
                cX = Shape1(I).Width / 2 + Shape1(I).Left
                cY = Shape1(I).Height / 2 + Shape1(I).Top
                mX = Shape2.Width / 2 + Shape2.Left
                mY = Shape2.Height / 2 + Shape2.Top
                mR = Shape2.Width / 2
                If ((cX - mX) * (cX - mX) + (cY - mY) * (cY - mY) <= mR * mR) Then 'стандартное условие попадения в центр окружности (x-a)^2+(y-b)^2=R^2, где a и b - центр окружности
                ' попадает на данном такте
                    tikcir(I) = True
                Else
                    If tikcir(I) Then ' был на мишени в прошлом такте
                        CoCurr = CoCurr + 1
                    End If
                    tikcir(I) = False
                End If
              Label4.Caption = "Время: " + Str(TiStop - TiCurr) + " Частиц: " + Str(CoCurr + Ghost)
              a_Y(I) = a_Y(I) + VY(I): Shape1(I).Left = a_Y(I)
              a_X(I) = a_X(I) + VX(I): Shape1(I).Top = a_X(I)
            Next I
          End If
        Timer1.Enabled = True
        Timer1.Interval = 10
        Time = 0
        For I = 1 To Time
        Time = Time + 1
        Label4.Caption = Time
        Ghost = 0
 
        For J = 0 To N
            If tikcir(J) Then
                Ghost = Ghost + 1
            End If
        Next J
    Next I
    Else
        Ghost = 0
 
        For I = 0 To N
            If tikcir(0) Then
            Ghost = Ghost + 1
            End If
        Next I
      Timer1.Enabled = False
      Label4.Caption = "Время: " + Str(TiStop - TiCurr) + " Частиц: " + Str(CoCurr)
      If (CoCurr <= CoStop) And (TiCurr = TiStop) Then
        MsgBox "В объектив не попало заданное число частиц", vbInformation
      Else
        MsgBox "В объектив попало заданное число частиц", vbInformation
      End If
      
  End If
End Sub
Private Sub Command1_Click(Index As Integer)
For I = 0 To N
        Shape1(I).Visible = True
Next I
CoStop = Val(Text1.Text)
TiCurr = 0
TiStop = Val(Text2.Text)
CoCurr = 0
Timer2.Interval = 1000
Timer2.Enabled = True
Call Timer1_Timer
End Sub
Private Sub Command2_Click(Index As Integer)
Timer1.Enabled = False
Timer2.Enabled = False
End Sub
 
 
Sub near_Bac()
Dim I As Integer, J As Integer, T As Double
Dim V As Double, xn As Double, yn As Double
Dim dX As Double, dY As Double
TN = 1.79769313486231E+308
For I = 0 To N - 1
  For J = I + 1 To N
    vXij = VX(J) - VX(I)
    vYij = VY(J) - VY(I)
    If vXij <> 0 Or vYij <> 0 Then
      T = 1.79769313486231E+308
      dX = a_X(I) - a_X(J)
      dY = a_Y(I) - a_Y(J)
      V = Sqr(vXij * vXij + vYij * vYij)
      yn = (dX * vYij - vXij * dY) / V
      If Abs(yn) <= D Then
        xn = (dX * vXij + vYij * dY) / V
        If xn >= 0 Then T = (xn - Sqr(D * D - yn * yn)) / V
      End If
      If T < TN Then TN = T: II = I: JJ = J
    End If
  Next J
Next I
For I = 0 To N
  If VX(I) > 0 Then
    T = (Me.ScaleHeight - a_X(I) - D) / VX(I): If T < TN Then II = I: JJ = -1: TN = T
  ElseIf VX(I) < 0 Then
    T = -a_X(I) / VX(I): If T < TN Then II = I: JJ = -1: TN = T
  End If
  If VY(I) > 0 Then
    T = (Me.ScaleWidth - a_Y(I) - D) / VY(I): If T < TN Then II = I: JJ = -2: TN = T
  ElseIf VY(I) < 0 Then
    T = -a_Y(I) / VY(I): If T < TN Then II = I: JJ = -2: TN = T
  End If
Next I
tik = 0
End Sub
Sub Timer2_Timer()
TiCurr = TiCurr + 1
I = I + 1
End Sub
 
Private Sub Timer3_Timer()
    If (Text1.Text = "") Or (Text2.Text = "") Then
        Frame2.Enabled = False
    Else
        Frame2.Enabled = True
    End If
End Sub
код очень большой,если так не понятно , то ниже сама программа<3
Вложения
Тип файла: zip 28-05-2013_20-07-50.zip (13.6 Кб, 11 просмотров)
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
29.05.2013, 21:21
Ответы с готовыми решениями:

Матрица объясните код.
такая проблема нашел исходный код но в ВБ не когда не работал а работу надо сдать в теч недели сказали пиши на чем хочешь вот думаю может...

Объясните код
#include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; int main(int argc, char **argv){ int *arr, far_num, k; size_t count, i; ...

Объясните код
Объясните код желательно расписать каждый оператор и строчку. Program KL8; uses crt; var s,t:string; i:integer; begin ...

3
 Аватар для Апострофф
9908 / 3924 / 742
Регистрация: 11.10.2011
Сообщений: 5,907
29.05.2013, 22:55
Лучший ответ Сообщение было отмечено The trick как решение

Решение

Цитата Сообщение от JtDimka Посмотреть сообщение
хотя бы основные
Visual Basic
1
2
3
Dim X As Single 'объявляем X как урезанную вещественную
Dim Y As Single 'объявляем Y как урезанную вещественную
и т.д.
А если вопросы про Sub near_Bac() - обращайтесь в ЛС к автору
1
2 / 2 / 1
Регистрация: 19.05.2012
Сообщений: 57
30.05.2013, 23:48  [ТС]
не просто дословно объяснить, а что ещё эта переменная будет делать в программе
0
 Аватар для Alex77755
11525 / 3812 / 683
Регистрация: 13.02.2009
Сообщений: 11,229
31.05.2013, 01:04
а что ещё эта переменная будет делать в программе
Это ты спроси у автора программы!
Похоже, что ничего не будет делать! Что-то я не нашел ей применения

Добавлено через 1 минуту
Точно! Это рудименты!

Добавлено через 6 минут
Visual Basic
1
2
'Dim T As Single
'Dim TiCo As Boolean
Тоже не применяются
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
31.05.2013, 01:04
Помогаю со студенческими работами здесь

Объясните код
Поясните код, в вкратце. Что к чему происходит. procedure TForm1.SomeEditKeyPress(Sender: TObject; var Key: Char); var i:...

Объясните код
Объясните, пожалуйста, как работает функция Find и для чего там if (str&amp;&amp;fnd) И еще, как работает в выводе знак вопроса и две точки уже в...

Объясните код
Объясните, как работают перегрузки оператора = и функций Union ..а точнее указатель this.Заранее спасибо. #include &lt;iostream&gt; ...

Объясните код
Я новичек в программировании на Си, и нашел более понятную книгу по СИ (Керниган и ритчи). Там есть код, но я не могу понять некоторые...

Объясните код
Приветствую форумчане! Нуждаюсь в Вашей помощи! Помогите пожалуйста разобраться с кодом, закоММентируйте :bye: Большое спасибо! /*1*/...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Функция установки текстового статуса в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru