powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Чем плох безусловный переход??
9 сообщений из 109, страница 5 из 5
Чем плох безусловный переход??
    #32978460
Про Лазутчиктоись, ты хочешь сказать, что после выполнения break label; (в данном примере) мы не будем входить в тело 1-го цикла, то есть пропустим эту парочку(for; for) и пойдем дальше?

Я не хочу это сказать, я это уже сказал :)
...
Рейтинг: 0 / 0
Чем плох безусловный переход??
    #32979542
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Анти ЛазутчикА почему этот самый break label в Java, может прыгать только на верх,
Он не прыгает наверх, он ссылается наверх. Прыгал бы - если бы в этом месте стоял goto. А break означает "выйти из цикла, помеченного label".
...
Рейтинг: 0 / 0
Чем плох безусловный переход??
    #32979716
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ничем.
Спросил бы лучше "Чем плохи безусловные переходы?".
...
Рейтинг: 0 / 0
Чем плох безусловный переход??
    #33044333
Фотография RatTail
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я как-то набрел на вот такую вещицу (задача о назначениях на фортране):
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
C THIS SUBROUTINE SOLVES THE FULL DENSITY LINEAR ASSIGNMENT PROBLEM
C ACCORDING TO 
C
C "A Shortest Augmenting Path Algorithm for Dense and Sparse Linear   
C Assignment Problems," Computing  38 ,  325 - 340 ,  1987 
C   
C by
C   
C R. Jonker and A. Volgenant, University of Amsterdam.
Переписал ее на VB один к одному . Работает как зверь! Матрицу 10000х10000
обсчитывает мгновенно. Интересно было бы сравнить это с Венгерским методом.
Авторы клянутся, что их алгоритм работает намного быстрее любого "классического".


НО ПОЛЮБУЙТЕСЬ НА ЭТОТ КОШМАР ИЗ GOTOS !!!!!!!!!!!!
Код: plaintext
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.
Sub AssignmentProblem()
Const N =  5 
Dim i&, i0&, j&, j0&, j1&, h&, k&, z&, cnt&, s$, ss$
Dim m&, m0&, v0&, vj&, dj&, up&, min&, low&, last&
Dim c&(N, N), x(N), y(N), u(N), v(N)
Dim lab&(N), d&(N), free&(N), col&(N)

For i =  1  To N
For j =  1  To N
c(i, j) = Cells(i, j)
Next j
Next i

For i =  1  To N
x(i) =  0 
Next i

For j0 =  1  To N
j = N - j0 +  1 : vj = c(j,  1 ): i0 =  1 
For i =  2  To N
If c(j, i) < vj Then vj = c(j, i): i0 = i
Next i
v(j) = vj: col(j) = j
If x(i0) =  0  Then
x(i0) = j: y(j) = i0
Else
x(i0) = - 1  * Abs(x(i0)): y(j) =  0 
End If
Next j0

m =  0 
For i =  1  To N
If x(i) =  0  Then
m = m +  1 : free(m) = i: GoTo  40 
End If
If x(i) <  0  Then
x(i) = - 1  * x(i)
Else
j1 = x(i): min =  10  ^  9 
For j =  1  To N
If j = j1 Then GoTo  31 
If c(j, i) - v(j) < min Then min = c(j, i) - v(j)

 31 
Next j
v(j1) = v(j1) - min
End If

 40 
Next i

cnt =  0 
If m =  0  Then GoTo  999 

 41 
m0 = m: k =  1 : m =  0 

 50 
i = free(k): k = k +  1 : v0 = c( 1 , i) - v( 1 )
j0 =  1 : vj =  10  ^  9 

For j =  2  To N
h = c(j, i) - v(j)
If h < vj Then
If h >= v0 Then
vj = h: j1 = j
Else
vj = v0: v0 = h: j1 = j0: j0 = j
End If
End If
Next j

i0 = y(j0)
If v0 < vj Then
v(j0) = v(j0) - vj + v0
Else
If i0 =  0  Then GoTo  43 
j0 = j1: i0 = y(j1)
End If
If i0 =  0  Then GoTo  43 
If v0 < vj Then
k = k -  1 : free(k) = i0
Else
m = m +  1 : free(m) = i0
End If

 43 
x(i) = j0: y(j0) = i
If k <= m0 Then GoTo  50 
cnt = cnt +  1 
If (m >  0 ) And (cnt <  2 ) Then GoTo  41 
m0 = m
For m =  1  To m0
i0 = free(m)
For j =  1  To N
d(j) = c(j, i0) - v(j)
lab(j) = i0
Next j

up =  1 : low =  1 

 60 
last = low -  1 : min = d(col(up)): up = up +  1 

For k = up To N
j = col(k): dj = d(j)
If dj <= min Then
If dj < min Then
min = dj: up = low
End If
col(k) = col(up): col(up) = j: up = up +  1 
End If
Next k

For h = low To up -  1 
j = col(h)
If y(j) =  0  Then GoTo  70 
Next h

 55 
j0 = col(low): low = low +  1 
i = y(j0): h = c(j0, i) - v(j0) - min

For k = up To N
j = col(k): vj = c(j, i) - v(j) - h
If vj < d(j) Then
d(j) = vj: lab(j) = i
If vj = min Then
If y(j) =  0  Then GoTo  70 
col(k) = col(up): col(up) = j: up = up +  1 
End If
End If
Next k

If low = up Then GoTo  60 
GoTo  55 

 70 
For k =  1  To last
j0 = col(k): v(j0) = v(j0) + d(j0) - min
Next k

 80 
i = lab(j): y(j) = i: k = j: j = x(i): x(i) = k
If i0 <> i Then GoTo  80 
Next m
 999 

z =  0 
s = "Номера колонок: "
ss = "Выбранные значения: "
For i =  1  To N
u(i) = c(x(i), i) - v(x(i)): z = z + c(x(i), i)
s = s & y(i) & " ": ss = ss & c(i, y(i)) & " "
Next i
Debug.Print "МинСумма: " & z & vbCrLf & s & vbCrLf & ss
MsgBox "МинСумма: " & z & vbCrLf & s & vbCrLf & ss
End Sub
...
Рейтинг: 0 / 0
Чем плох безусловный переход??
    #33044872
Несчастный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RatTail

Код: plaintext
1.
University of Amsterdam.



Остальные побочки скипнуты.
...
Рейтинг: 0 / 0
Чем плох безусловный переход??
    #33044878
Фотография RatTail
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Несчастный RatTail

Код: plaintext
1.
University of Amsterdam.



Остальные побочки скипнуты.
Не понял; что, опять падлы у рассейских ученых что-то украли?
...
Рейтинг: 0 / 0
Чем плох безусловный переход??
    #33044886
Фотография Di_LIne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2RatTail
- НЕ отвлекайся!!! Шай-бу! Шай-бу!
Для неинтересующихся тынц
...
Рейтинг: 0 / 0
Чем плох безусловный переход??
    #33049671
bill
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonПозвольте несколько слов в защиту goto.

1) Иногда без него трудно обойтись. К примеру, довольно трудно выйти из двух и более вложенных циклов без использования goto.


В С++ для этого есть try...catch. В exeption заодно можно сказать, из-за чего вывалился.
...
Рейтинг: 0 / 0
Чем плох безусловный переход??
    #33050105
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bill maytonПозвольте несколько слов в защиту goto.

1) Иногда без него трудно обойтись. К примеру, довольно трудно выйти из двух и более вложенных циклов без использования goto.


В С++ для этого есть try...catch. В exeption заодно можно сказать, из-за чего вывалился.

Ого! Радикально! Как ты думаешь .. это упростит процесс ОТЛАДКИ такого кода?
...
Рейтинг: 0 / 0
9 сообщений из 109, страница 5 из 5
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Чем плох безусловный переход??
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]