Страница: 1 |
Страница: 1 |
Вопрос: VB .NET (Оптимизация, бесконечно вложенный цикл)
Добавлено: 16.12.12 21:08
Автор вопроса: Артем
Есть код в нем куча вложенных циклов, надо это дело оптимизировать.
Кусок кода без оптимизации:
strn = Mid(str, i1, 1)
strn = strn & Mid(str, i2, 1)
strn = strn & Mid(str, i3, 1)
strn = strn & Mid(str, i4, 1)
strn = strn & Mid(str, i5, 1)
strn = strn & Mid(str, i6, 1)
ListBox1.Items.Add(strn)
updateform()
If str.Length = 6 Then GoTo nextstr6
For i7 = 1 To str.Length
strn = Mid(str, i1, 1)
strn = strn & Mid(str, i2, 1)
strn = strn & Mid(str, i3, 1)
strn = strn & Mid(str, i4, 1)
strn = strn & Mid(str, i5, 1)
strn = strn & Mid(str, i6, 1)
strn = strn & Mid(str, i7, 1)
ListBox1.Items.Add(strn)
updateform()
If str.Length = 6 Then GoTo nextstr7
For i8 = 1 To str.Length
strn = Mid(str, i1, 1)
strn = strn & Mid(str, i2, 1)
strn = strn & Mid(str, i3, 1)
strn = strn & Mid(str, i4, 1)
strn = strn & Mid(str, i5, 1)
strn = strn & Mid(str, i6, 1)
strn = strn & Mid(str, i7, 1)
strn = strn & Mid(str, i8, 1)
ListBox1.Items.Add(strn)
updateform()
Next
nextstr7:
Next
nextstr6:
Next
Спасибо.
Ответы
Всего ответов: 4
Номер ответа: 1
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #1
Добавлено: 17.12.12 07:43
Чего вы ожидаете? Что кто-то разберется в исходном коде программы, лишенной комментариев и корректно названых переменных, разбавленный goto операторами?
Какую цель вы преследуете при оптимизации данного кода?
Как вы пришли к мнению, что оптимизация кода вообще требуется?
Номер ответа: 2
Автор ответа:
Артем
Вопросов: 7
Ответов: 30
Профиль | | #2
Добавлено: 18.12.12 02:42
Есть 30 подобных вложеных друг в друга циклов.
Но если мне понадобиться делать не 30 а скажем 31 подход, я бы дописал во внутренний цикл еще 1 подобный.
Так вот как мне оптимизировать этот код, что бы мне не нужно было вручную дописывать еще 1 код, а просто указать сколько подходов делать...
strn = Mid(str, i1, 1)
ListBox1.Items.Add(strn)
pp1 = i1
updateform(strn, pp1, pp2, pp3, pp4, pp5, pp6, pp7, pp8, pp9, pp10)
If Form1.TextBox16.Text = 1 Then GoTo nextstr1
For i2 = p2 To str.Length
strn = Mid(str, i1, 1)
strn = strn & Mid(str, i2, 1)
ListBox1.Items.Add(strn)
pp2 = i2
updateform(strn, pp1, pp2, pp3, pp4, pp5, pp6, pp7, pp8, pp9, pp10)
If Form1.TextBox16.Text = 2 Then GoTo nextstr2
For i3 = p3 To str.Length
strn = Mid(str, i1, 1)
strn = strn & Mid(str, i2, 1)
strn = strn & Mid(str, i3, 1)
ListBox1.Items.Add(strn)
pp3 = i3
updateform(strn, pp1, pp2, pp3, pp4, pp5, pp6, pp7, pp8, pp9, pp10)
If Form1.TextBox16.Text = 3 Then GoTo nextstr3
............ тут метки и закрытие циклов
Номер ответа: 3
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #3
Добавлено: 18.12.12 06:07
Возможно, получится решить эту задачу с помощью рекурсии
Номер ответа: 4
Автор ответа:
Дмитрий
Вопросов: 9
Ответов: 18
Профиль | | #4
Добавлено: 22.05.13 10:45
http://www.vbnet.ru/forum/show.aspx?id=217380