Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 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
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6596
 Профиль | | #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
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6596
 Профиль | | #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 |

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





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