VB6: Как отсортировать массив чисел, но сопоставить соответствующее значение строки (текста) после - PullRequest
0 голосов
/ 03 декабря 2018

У меня проблемы с разделом моего кода.Я должен использовать VB6 для назначения, не спрашивай почему, я знаю, что он старый, не был бы моим первым выбором.Мне нужно привести в порядок таблицу лидеров текстовых файлов, у меня есть 2 файла, один с оценкой игрока, а другой с именем игрока (каждая строка каждого текстового файла соответствует имени и значению оценки).Я в порядке с сортировкой баллов и отображением их в окне списка, но просто не могу думать, как сопоставить значение строки / текста с соответствующим баллом после?Если бы кто-нибудь мог помочь, это было бы очень признательно.

Небольшой фрагмент кода, который я использовал для сортировки целочисленных значений, но теперь не знаю, как добавить к нему имя проигрывателя строки / текста.соответствующий отсортированный счет:

num = UBound(strPreviousScores)

For i = 0 To num
    SortedScores(i) = Val(strUnsortedScores(i))
Next i


For i = 0 To num
    For j = i + 1 To num
        If Sortedscores(i) < SortedScores(j) Then
            temp = SortedScores(i)
            SortedScores(i) = SortedScores(j)
            SortedScores(j) = temp
        End If
    Next j
Next i
'''''
intCounter = 0
For k = 0 To 4
    lstScores.AddItem SortedScores(intCounter)
    intCounter = intCounter + 1
Next
'''''

Спасибо

Джек

1 Ответ

0 голосов
/ 03 декабря 2018

Один вариант, предложенный @Comintern, будет массивом UDT с двумя членами.

Опция, которая сохраняет ваши существующие массивы, заключается в добавлении индексного массива.Вы создаете целочисленный массив, имеющий то же количество элементов, что и ваши текущие массивы, и «самозаполняетесь» им: каждая запись имеет в качестве своего значения значение его индекса: Idx (1) = 1, Idx (2) = 2etc

Затем, сортируя результаты, вы получаете доступ к массиву через индексный массив [как, например, Scores (Idx (x))] и меняете значения индекса, а не значения Scores.Когда вы закончите, Idx (1) имеет значение индекса наименьшего значения баллов.Тот же индекс можно использовать для доступа к массиву Players.

Это проще сделать, чем объяснить.Google "индексированная сортировка" для примеров.

Часть возможного кода из вашего примера:

 If Scores(Idx(i)) < Scores(Idx(j)) Then
    temp = Idx(i)
    Idx(i) = Idx(j)
    Idx(j) = temp
 End If
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...