Здравствуйте!у меня курсовая по VB. тема сортировка массива двумя методами:метод простые вставки и метод бинарные деревья,и данные задаются из текстового файла и притом еще надо график зависимости времени и количества элеметов построить,вот.у меня коды есть на эти 2 методы,и на данные из текстового файла,но почему то он не сортируется только вместо отсортированных цифр выходит о(нули).я отправлю код программы посмотрите пожалуйста и помогите отсортировать,заранее благодарна)))
Dim N As Long
Dim Arr(50) As Double
Dim I As Long
Dim J As Long
Dim K As Long
Dim Tmp As Double
Dim T As Long
Private Sub Command1_Click()
Picture1.Cls
N = 10
Open File1.Path + "\" + File1.FileName For Input As #1
Do While Not (EOF(1)) ' Пока не определил метку конца файла
Input #1, StrTemp ' Чтение данных из файла
Picture1.Print StrTemp
Arr(N) = Val(StrTemp)
N = N + 1
Loop
Close #1 ' Закрывает файл
End Sub
Private Sub Command2_Click()
Picture2.Cls
Arr(N) = Val(Tmp)
For I = 0 To N - 1
N = N - 1
I = 1
Do
J = 0
Do
If Arr(I) >= Arr(J) Then ' сортируем по убыванию
K = I
Tmp = Arr(I)
Do
Arr(K) = Arr(K - 1)
K = K - 1
Loop Until Not K > J
Arr(J) = Tmp
J = I
Else
J = J + 1
End If
Loop Until Not J < I
I = I + 1
Loop Until Not I <= N
Next
For I = 0 To N - 1
Picture2.Print Arr(I);
Next
Label11.Caption = Arr(0)
Label12.Caption = Arr(1)
Label13.Caption = Arr(2)
Label14.Caption = Arr(3)
Label15.Caption = Arr(4)
Label16.Caption = Arr(5)
Label17.Caption = Arr(6)
Label18.Caption = Arr(7)
Label19.Caption = Arr(8)
Label20.Caption = Arr(9)
End Sub
Private Sub Command3_Click()
Picture2.Cls
I = 2
Do
T = I
Do While T <> 1
K = T \ 2
If Arr(K - 1) > Arr(T - 1) Then
T = 1
Else
Tmp = Arr(K - 1)
Arr(K - 1) = Arr(T - 1)
Arr(T - 1) = Tmp
T = K
End If
Loop
I = I + 1
Loop Until Not I <= N
I = N - 1
Do
Tmp = Arr(I)
Arr(I) = Arr(0)
Arr(0) = Tmp
T = 1
Do While T <> 0
K = 2 * T
If K > I Then
T = 0
Else
If K < I Then
If Arr(K) > Arr(K - 1) Then
K = K + 1
End If
End If
If Arr(T - 1) >= Arr(K - 1) Then
T = 0
Else
Tmp = Arr(K - 1)
Arr(K - 1) = Arr(T - 1)
Arr(T - 1) = Tmp
T = K
End If
End If
Loop
I = I - 1
Loop Until Not I >= 1
For I = 2 To N - 1
Picture2.Print Arr(I);
Next I
End Sub
где Command4 тут рисует таблицу,так как у меня визуализация в виде таблицы
Private Sub Command5_Click()
Form3.Show
Form2.Hide
End Sub
Private Sub Drive1_Change()
Dir1.Path = Drive1.Drive ' Выбираем диск f
End Sub
Private Sub Dir1_Change()
File1.Path = Dir1.Path ' Выбираем папку Курсовая работа
End Sub
Помогите пожалуйста,на этой неделе сдавать надо,хорошо что нашла ваш сайт,надеюсь будет помощь,надеюсь...
Логика программы сильно нарушена. Во первых ошибка может скрываться при загрузке чисел из файла. Во вторых все переменные уровня модуля - отследить где что пресекается сложно.
почему то он не сортируется только вместо отсортированных цифр выходит о(нули).
а вот у меня почему то сортируется, но если в файле все значения сделать меньше еденицы, то после сортировки реально будут нули. Это потому что переменная StrTemp не объявлена как строковая.
Короче:
после Private Sub Command1_Click() надо вписать Dim StrTemp As String.