|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
Помогите с алгоритмом
Имеется 2 ListBox'a, в них записаны строки(числа), нужно проверить их на совпадения, чтобы не было одинаковых в каждом ListBox'e. И если они совпадают, то заменить числом [предел от 1 до 1000].
Например: имеется 1, 265, 333 в 1 ListBox'е и 2,265,333, 432 во 2-ом. Нужно проверить, чтобы эти числа не совпадали и заменить в 1 ListBox'e совпадающие числа на другие [предел от 1 до 1000]. Поогите пожалуйста как организовать алгоритм сравнения, а то я что-то совсем запутался |
#2
|
|||
|
|||
Да будет код:
Код:
procedure TForm1.Eq(L1:TStrings; L2:TStrings); var i,j:integer; begin Randomize; for i:=0 to L1.Count-1 do //Берем i'тый элемент с L1 for j:=0 to L2.Count-1 do //потом пробегаемся по всем элементам L2 и стравниваем с i'тым элементом L1 if L1.Strings[i]=L2.Strings[j] then L2.Strings[j]:=IntToStr(Random(1000)+1); //если совпадение меняем j'тый элемент L2 на случайный end; |
#3
|
||||
|
||||
ART есть вероятность что сгенерированное число уже будет в списке (сруди тех элементов по которым уже прошлись).
Не профи, но и не чайник . D6 - лучше не придумали. Пока. |
#4
|
|||
|
|||
Да, можно еще один цикл воткнуть.
|
#5
|
||||
|
||||
Похоже я сделал
Вроде получилось, но не ваш пример(т.к. я подразумевал такой, но сделал с последовательными именами).
|