Страница: 1 |
Вопрос: VB .NET (Оптимизация, бесконечно вложенный цикл) | Добавлено: 16.12.12 21:08 |
Автор вопроса: ![]() |
Есть код в нем куча вложенных циклов, надо это дело оптимизировать.
Кусок кода без оптимизации: For i6 = 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) 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 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Разработчик Вопросов: 130 Ответов: 6602 |
Профиль | Цитата | #1 | Добавлено: 17.12.12 07:43 |
Чего вы ожидаете? Что кто-то разберется в исходном коде программы, лишенной комментариев и корректно названых переменных, разбавленный goto операторами?
Какую цель вы преследуете при оптимизации данного кода? Как вы пришли к мнению, что оптимизация кода вообще требуется? |
Номер ответа: 2 Автор ответа: ![]() ![]() ![]() ![]() Вопросов: 7 Ответов: 30 |
Профиль | Цитата | #2 | Добавлено: 18.12.12 02:42 |
Есть 30 подобных вложеных друг в друга циклов.
Но если мне понадобиться делать не 30 а скажем 31 подход, я бы дописал во внутренний цикл еще 1 подобный. Так вот как мне оптимизировать этот код, что бы мне не нужно было вручную дописывать еще 1 код, а просто указать сколько подходов делать... For i1 = p1 To str.Length
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 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Разработчик Вопросов: 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 |
Страница: 1 |
|