| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Центр помощи > [Delphi] Сравнение элементов массива |
| Автор: ARAV 4.11.2006, 13:01 | ||
| Здравствуйте! Не могли бы вы помочь мне сделать перебор без повторений в следующем массиве строк: A = (‘b’ ‘a’ ‘a’ ‘b’ ‘a’) (массив может быть любым) Правило перебора: Например, сравниваем: (1) A[0] и A[0] ‘b’ и ‘b’ – равны, но не запоминаем, так как символ совпал сам с собой A[0] и A[1] ‘b’ и ‘a’ – не равны => не запоминаем A[0] и A[2] ‘b’ и ‘a’ – не равны => не запоминаем A[0] и A[3] ‘b’ и ‘b’ – равны => запоминаем оба символа 'b' (так как совпадение произошло в первый раз) A[0] и A[4] ‘b’ и ‘a’ – не равны => не запоминаем (2) A[1] и A[0] ‘a’ и ‘b’ – не равны => не запоминаем A[1] и A[1] ‘a’ и ‘a’ – равны, но не запоминаем, так как символ совпал сам с собой A[1] и A[2] ‘a’ и ‘a’ – равны => запоминаем оба символа ‘a’ (так как совпадение произошло в первый раз) A[1] и A[3] ‘a’ и ‘b’ – не равны => не запоминаем A[1] и A[4] ‘a’ и ‘a’ – равны, но запоминаем ТОЛЬКО символ ‘a’ (элемент A[4]), так как до этого A[1] уже запоминался. (3) A[2] и A[0] ‘a’ и ‘b’ – не равны => не запоминаем A[2] и A[1] ‘a’ и ‘a’ – равны, но НЕ ЗАПОМИНАЕМ, так как символы A[2] и A[1] уже запоминались. A[2] и A[2] ‘a’ и ‘a’ – равны, но не запоминаем, так как символ совпал сам с собой A[2] и A[3] ‘a’ и ‘b’ – не равны => не запоминаем A[2] и A[4] ‘a’ и ‘a’ – НЕ запоминаем, так как символы A[2] и A[4] уже запоминались. И т.д. Если использовать цикл как в этой процедуре:
то получается: [ 0 ][ 3 ] bb - правильно [ 1 ][ 2 ] aa - правильно [ 1 ][ 4 ] aa – не правильно, надо запомнить только второй символ ‘a’ (A[4]) [ 2 ][ 1 ] aa – не правильно, не надо запоминать ничего [ 2 ][ 4 ] aa - не правильно, не надо запоминать ничего [ 3 ][ 0 ] bb - не правильно, не надо запоминать ничего [ 4 ][ 1 ] aa - не правильно, не надо запоминать ничего [ 4 ][ 2 ] aa - не правильно, не надо запоминать ничего Как избавиться от этих «неправильных» запоминаний? Заранее спасибо всем, кто ответит. |
| Автор: apook 4.11.2006, 14:05 |
| надо ввести проверку на срвпадение индексов |
| Автор: MBo 4.11.2006, 14:21 |
| надо поразмыслить, и внутренний цикл начинать не с нуля... |
| Автор: apook 4.11.2006, 14:45 | ||||
C нуля с нуля Суть в том что каждый символ первого массива пропускается через все символы второго столько раз сколько символов в первом массиве на Cи как то лучше выглядит:
|
| Автор: MBo 4.11.2006, 16:42 |
| apook, а где у автора речь идет о двух массивах? |
| Автор: apook 4.11.2006, 18:45 | ||||
| И точно тогда как то не понятно зачем его сравнивать с собой Теперь понял фишку вот код на Cи понравитя можно переделать в Pas
|
| Автор: ARAV 5.11.2006, 06:13 |
| Огромное всем спасибо за быстрые и полезные советы! |